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

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

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

平衡二叉树

中序遍历,当前节点值不小于前一个节点值
不能如下直接赋值,会覆盖
self.is_search_tree = (self.pre.val >= root.val)

完全二叉树

思路一:将所有的结点全部押入队列中,空也压入,每次判断队列的头如果队列头为空了则跳出循环,如果此后队列中还有元素则不是完全二叉树。

# 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 ):
        # write code here
        self.is_search_tree = True
        self.is_complete_tree = True
        self.pre = None
        def inorder(root):
            if root is None or not self.is_search_tree:
                return
            inorder(root.left)
            if self.pre is not None:
                self.is_search_tree = self.is_search_tree and not (self.pre.val >= root.val)
            self.pre = root
            inorder(root.right)
        inorder(root)

        def is_conplete_tree(root):
            if root is None:
                return True
            queue = [root]
            cur = queue.pop(0)
            while cur:
                queue.append(cur.left)
                queue.append(cur.right)
                cur = queue.pop(0)
            for q in queue:
                if q is not None:
                    return False
            return True
        self.is_complete_tree = is_conplete_tree(root)
        return [self.is_search_tree, self.is_complete_tree]
全部评论

相关推荐

焦虑中,不知道怎么办了。。。
西北上单:应该放俩项目合理一些 我是一个业务开发项目 一个AI项目和你这个写的亮点差不多
你的简历改到第几版了
点赞 评论 收藏
分享
03-26 12:00
已编辑
门头沟学院 Java
offer魅魔_oc...:100-200每天,你还要倒贴100
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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