Validate Binary Search Tree
验证BST一定要记住一点,不是所有结点的值小于它的右孩子且大于它的左孩子就行了,BST的每一次向下遍历要看成一次二分,符合条件的范围要随着遍历的值缩小
class Solution(object):
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.helper(root, -sys.maxint, sys.maxint)
def helper(self, root, leftBound, rightBound):
if not root:
return True
if leftBound < root.val < rightBound:
leftVal = root.left.val if root.left else -sys.maxint
rightVal = root.right.val if root.right else sys.maxint
left = self.helper(root.left, leftBound, root.val)
right = self.helper(root.right, root.val, rightBound)
return left and right and (leftVal < root.val < rightVal)
else:
return False