98. 验证二叉搜索树
https://leetcode-cn.com/problems/validate-binary-search-tree/
解法一:中序遍历后判断
根据二叉搜索树的性质。中序遍历,将结果记录在data,再遍历data,看是否是升序,是则符合。
边界:树空,或者只有根节点,这两者都不进入循环
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
self.data = []
self.inorder(root)
for i in range(len(self.data)-1):
if self.data[i] >= self.data[i+1]:
return False #不符合升序
return True
def inorder(self, root): #中序遍历
if not root:
return
self.inorder(root.left)
self.data.append(root.val)
self.inorder(root.right)改进:遍历之后先将data转成set(排除重复项,二叉搜索树中不应该有重复),再排序后与原data比较,若相等则符合
解法二:遍历中判断
2021.10.22
要在递归中加入上下界参数,将其传递下去比较,否则root比左子大,不一定能保证root比左子的右子大
最后更新于