每个根节点返回该子树的范围
class Solution:
def isValidBST(self, root: Optional[TreeNode]) -> bool:
if not root:return False
def tra(root):
if root.left:
left_range = tra(root.left)
if left_range == False:return False
if left_range[1]>=root.val:return False
else:
left_range = (root.val,root.val)
if root.right:
right_range = tra(root.right)
if right_range == False:return False
if right_range[0]<=root.val:return False
else:
right_range = (root.val,root.val)
return (left_range[0],right_range[1])
if not tra(root):return False
return True