注意
主要和b站大雪菜一起刷題,寶藏up主(https://www.bilibili.com/video/BV19t411w7Ep/?spm_id_from=333.788.videocard.0)
98. 驗證二叉搜索樹
思路:
- 這個題只需要判斷是否是BST即可
- 題目條件限制的也很清晰,不會出現節點相等的情況
- 考慮劃分範圍的做法,假如當前節點的值爲x,則左子樹的取值範圍爲[-∞,x-1],右子樹的取值範圍爲[x+1,∞]
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
return self.dfs(root, -float('INF'), float('INF'))
def dfs(self, root, min_val, max_val):
if not root:
return True
if root.val>max_val or root.val<min_val:
return False
return self.dfs(root.left, min_val, root.val-1) and self.dfs(root.right, root.val+1, max_val)