题解 | #判断一棵二叉树是否为搜索二叉树和完全二叉树#

判断一棵二叉树是否为搜索二叉树和完全二叉树

https://www.nowcoder.com/practice/f31fc6d3caf24e7f8b4deb5cd9b5fa97

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 the root
# @return bool布尔型一维数组
#
class Solution:
    def judgeIt(self , root: TreeNode) -> List[bool]:
        # write code here
        return [self.judge_search_tree(root, None, None), self.judge_all_tree(root)]

    def judge_search_tree(self, root, low, high):
        if not root: return True
        if (not low or root.val > low) and (not high or root.val < high):
            left_f = self.judge_search_tree(root.left, low, root.val)
            right_f = self.judge_search_tree(root.right, root.val, high)
            return left_f and right_f 
        return False

    def judge_all_tree(self, root):
        if not root: return True
        p = root
        q = [p]
        f = 0
        while q:
            if f==1:
                if q[0].left or q[0].right:
                    return False
            if f==0:
                if not q[0].right:
                    if q[0].left: q.append(q[0].left)
                    f = 1
                    q.pop(0)
                    continue
                if not q[0].left: return False
                q.append(q[0].left)
                q.append(q[0].right)
            q.pop(0)
        return True

全部评论

相关推荐

08-01 18:35
湖南大学 C++
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
07-24 03:49
门头沟学院 Java
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务