題目描述
給定一棵二叉搜索樹,請找出其中第k大的節點。
思路
代碼
class Solution:
def kthLargest(self, root:TreeNode, k:int)->int:
def dfs(root):
if not root: return
dfs(root.right)
if self.k == 0: return
self.k -= 1
if self.k == 0:
self.res = root.val
dfs(root.left)
self.k = k
dfs(root)
return self.res
複雜度
時間複雜度 O(N): 當樹退化爲鏈表時(全部爲右子節點),無論 k的值大小,遞歸深度都爲 N ,佔用 O(N) 時間。
空間複雜度 O(N): 當樹退化爲鏈表時(全部爲右子節點),系統使用 O(N) 大小的棧空間。