题解 | #二叉树的前序遍历#

判断是不是二叉搜索树

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

判断是否为二插搜索树,即当前节点满足 左子结点 < 当前节点 < 右子结点,且所有的节点均满足, 递归遍历所有结点,直到节点为空; 遍历时对于未知节点以无穷值代替,如 root.left 向 left 分支时, 其 left 节点的值为 float("-inf"); root.right 向 right 分支时, 其 right 节点的值为 float("inf")。 代码如下:

class Solution:
    def isValidBST(self , root: TreeNode) -> bool:
        # write code here
        return self.valid_bst(root, TreeNode(float("-inf")), TreeNode(float("inf")))
    
    def valid_bst(self, root: TreeNode, left: TreeNode, right: TreeNode) -> bool:
        if not root:
            return True
        if root.val < left.val or root.val > right.val:
            return False
        return self.valid_bst(root.left, left, root) and self.valid_bst(root.right, root, right)
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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