↓快轉到主要內容
  1. LeetCode/

LeetCode 700: Search in a Binary Search Tree

·1 分鐘· ·
LeetCode Easy Tree Binary-Search-Tree Binary-Tree
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-31

  • 提交紀錄:Accepted(一次通過)

解題思路
#

BST 的搜尋(Tree 模板三):目前的值比目標大就往左、比目標小就往右,相等就找到了;走到 None 代表不存在。

我的解法
#

class Solution:
    def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        while root and root.val != val:
            root = root.left if val < root.val else root.right
        return root

複雜度
#

時間 O(h),空間 O(1)。

要特別避免的錯誤
#

  • 回傳的是節點(整棵子樹),不是值。

面試口說整理
#

我從根往下,比目標大就往左、比目標小就往右,找到或走到 None 就回傳。時間 O(h)、空間 O(1)。

相關文章

LeetCode 501: Find Mode in Binary Search Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Binary-Search-Tree Binary-Tree
LeetCode 501 解題筆記:BST 中序是排序的,相同的值會連在一起;中序時數目前這段的長度,比最大值大就重設答案,一樣大就加入
LeetCode 703: Kth Largest Element in a Stream
·1 分鐘
LeetCode Easy Tree Design Binary-Search-Tree Heap-Priority-Queue
LeetCode 703 解題筆記:維持一個大小為 k 的最小堆,堆頂就是第 k 大
LeetCode 530: Minimum Absolute Difference in BST
·1 分鐘
LeetCode Easy Tree Depth-First-Search Breadth-First-Search Binary-Search-Tree
LeetCode 530 解題筆記:BST 的中序是由小到大,最小差一定出現在中序相鄰的兩個值之間;記住前一個值逐一比較
LeetCode 637: Average of Levels in Binary Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 637 解題筆記:層序遍歷,每層加總除以節點數
LeetCode 671: Second Minimum Node In a Binary Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Binary-Tree
LeetCode 671 解題筆記:根就是最小值;第二小值是整棵樹裡第一個比根大的最小值,值等於根的子樹才需要往下找
LeetCode 563: Binary Tree Tilt
·1 分鐘
LeetCode Easy Tree Depth-First-Search Binary-Tree Dp-on-Trees
LeetCode 563 解題筆記:後序回傳子樹的總和,每個節點的 tilt 是左右子樹總和的差,加進答案