LeetCode 230. 二叉搜尋樹中第K小的元素
阿新 • • 發佈:2020-12-02
230. 二叉搜尋樹中第K小的元素
Difficulty: 中等
給定一個二叉搜尋樹,編寫一個函式kthSmallest
來查詢其中第**k**個最小的元素。
說明:
你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。
示例 1:
輸入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
輸出: 1
示例 2:
輸入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
輸出: 3
進階:
如果二叉搜尋樹經常被修改(插入/刪除操作)並且你需要頻繁地查詢第 k 小的值,你將如何優化kthSmallest
Solution
Language: 全部題目
涉及到二叉搜尋樹,一般會考到中序遍歷,中序遍歷把節點拿出來就簡單了。這題還可以用二分查詢解決?
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def kthSmallest(self, root: TreeNode, k: int) -> int: res = [] self.dfs(root, res) return res[k-1] def dfs(self, root, res): if root: self.dfs(root.left, res) res.append(root.val) self.dfs(root.right, res)