class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def helper(node, lower = float('-inf'), upper = float('inf')) -> bool:
if not node:
return True
val = node.val
if val <= lower or val >= upper:
return False
if not helper(node.right, val, upper):
return False
if not helper(node.left, lower, val):
return False
return True
return helper(root)
树,中等,官方解法👆
https://leetcode-cn.com/problems/validate-binary-search-tree/
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
self.lastn = None
return self.inOrder(root)
# for i in range(len(self.inList)-1):
# if self.inList[i] > self.inList[i+1]:
# return F
def inOrder(self,root):
if not root:
return True
left = self.inOrder(root.left)
if self.lastn != None:
if root.val <= self.lastn:
return False
self.lastn = root.val
right = self.inOrder(root.right)
if left and right:
return True
else:
return False
我写的屑解法,效率差不多👆