剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)

题目描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章