【LeetCode】樹專題(持續更新。。。)

注意

主要和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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章