[98]验证二叉搜索树

# 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 
# 
#  有效 二叉搜索树定义如下: 
# 
#  
#  节点的左子树只包含 小于 当前节点的数。 
#  节点的右子树只包含 大于 当前节点的数。 
#  所有左子树和右子树自身必须也是二叉搜索树。 
#  
# 
#  
# 
#  示例 1: 
# 
#  
# 输入:root = [2,1,3]
# 输出:true
#  
# 
#  示例 2: 
# 
#  
# 输入:root = [5,1,4,null,null,3,6]
# 输出:false
# 解释:根节点的值是 5 ,但是右子节点的值是 4 。
#  
# 
#  
# 
#  提示: 
# 
#  
#  树中节点数目范围在[1, 10⁴] 内 
#  -2³¹ <= Node.val <= 2³¹ - 1 
#  
#  Related Topics 树 深度优先搜索 二叉搜索树 二叉树 👍 1275 👎 0


# leetcode submit region begin(Prohibit modification and deletion)
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isValidBST(self, root: TreeNode) -> bool:
        current = float("-inf")

        def traverse(node):
            nonlocal current
            if node:
                if traverse(node.left) is False:
                    return False
                if node.val <= current:
                    return False
                else:
                    current = node.val
                if traverse(node.right) is False:
                    return False
            return True
        return traverse(root)
# leetcode submit region end(Prohibit modification and deletion)

 

posted @ 2021-11-01 21:11  小熊猫不是小浣熊  阅读(20)  评论(0)    收藏  举报