方法一:递归
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def helper(node,lower = float("-inf"),upper = float("inf")) : #代表负无穷,正无穷
if node == None : return True
val = node.val
if val <= lower or val >= upper :
return False
if not helper(node.left,lower,val) : return False
if not helper(node.right,val,upper) : return False
return True
return helper(root)
方法二:栈的迭送
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
if root is None : return True
stack = [(root,float("-inf"),float("inf"))]
while stack :
node,lower,upper = stack.pop()
if node is None : continue
val = node.val
if val <= lower or val >= upper :
return False
stack.append([node.left,lower,val])
stack.append([node.right,val,upper])
return True