[剑指Offer-54][简单] 二叉搜索树的第k大节点
解题思路
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4解题思路
最后更新于
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4最后更新于
# 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:
count = 0
def dfs(node):
if node is None:
return False, None
state, val = dfs(node.right)
if state:
return state, val
nonlocal count
count += 1
if count == k:
return True, node.val
return dfs(node.left)
return dfs(root)[1]