剑指 Offer 54. 二叉搜索树的第k大节点
思路:
中序遍历的逆过程,当遍历次数等于k,将当前节点的值保存下来,不包含递归栈的空间复杂度是O(1)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def kthLargest(self, root: TreeNode, k: int) -> int:
self.res = 0
self.k = k
def inorder(root):
if not root:
return
inorder(root.right)
self.k -= 1
if self.k == 0:
self.res = root.val
return
inorder(root.left)
inorder(root)
return self.res