题解 | #判断是不是二叉搜索树#

判断是不是二叉搜索树

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

误区:单独判断某一个子树是否满足搜索树是不够的

class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        # write code here
        if not root:
            return True
        if root.left and root.left.val >= root.val:
            return False
        if root.right and root.right.val <= root.val:
            return False
        else:
            return self.isValidBST(root.right) and self.isValidBST(root.left)

解法:如果一个数是搜索树,则它的中序遍历一定是一个递增数列

class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        # write code here
        # 中序遍历判断是否为单调增序列
        node_list = self.midOrder(root)
        for i in range(len(node_list) - 1):
            if node_list[i] >= node_list[i + 1]:
                return False
        return True
         
    def midOrder(self, node: TreeNode) -> list[int]:
        if not node:
            return []
        return self.midOrder(node.left) + [node.val] + self.midOrder(node.right)      
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
MinJerous:虽然我一直说 计算机不怎么卡学历 但是至少得一本
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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