题目描述
给定一棵二叉搜索树,请找出其中第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) 大小的栈空间。