# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.valid(root, None, None)
def valid(self, root, min, max):
if root == None:
return True
if (min is not None and root.val <= min) or (max is not None and root.val >= max):
return False # 应该root.left.val < root.val < root.right.val,才是BST
return self.valid(root.left, min, root.val) and self.valid(root.right, root.val, max) # 让左右子树都符合条件