2020快手:判断一棵满二叉树是否为二叉搜索树[python][数据结构][树的性质]

判断一棵满二叉树是否为二叉搜索树

http://www.nowcoder.com/questionTerminal/76fb9757332c467d933418f4adf5c73d

讲真没必要那么麻烦真的去构建一棵树,直接利用二叉搜索树的性质,python十几行就结束了。

  1. 满二叉树: 深度为n时共2^n-1个节点
  2. 二叉搜索树: 左节点所有<=根节点<所有右节点

核心思路:中序遍历二叉搜索树应单调递增 (由题意知道节点最小值为0,因此预设pre为-1);同时,满二叉树可以保证不越界。(BTW,如果非满,需要加一些边界条件)

pre, res = -1, True
def search(t, i):
    global pre, res
    if i >= len(t): return
    search(t, 2*i+1) # 左
    if t[i] < pre: # 非单调递增
        res = False # 找到一个反例即可证明其非二叉搜索树
        return res
    else:
        pre = t[i]
    search(t, 2*i+2) # 右

try:
    search(list(map(int, input().split(','))), 0)
except Exception as e: # 输入None根节点时直接print(True)
    pass
finally:
    print(res)
全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
评论
6
1
分享
牛客网
牛客企业服务