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

results matching ""

    No results matching ""