劍指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) 大小的棧空間。

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