題目描述
給定一個二叉搜索樹,編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。
說明:
你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜索樹元素個數。
算法思路
對二叉搜索樹寶具:中序遍歷。
這裏用self.k
作爲遞歸的結束條件,找到目標值時self.k=0
,結束遞歸。
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
self.k=k
self.res=-1
def helper(root):
if self.k:
if not root:return
helper(root.left)
self.k-=1
if self.k==0:self.res=root.val
helper(root.right)
helper(root)
return self.res
執行用時 :56 ms, 在所有 Python3 提交中擊敗了88.25%的用戶
內存消耗 :18 MB, 在所有 Python3 提交中擊敗了7.14%的用戶