剑指 Offer 54. 二叉搜索树的第k大节点
题目说明
给定一棵二叉搜索树,请找出其中第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
题解思路
利用二叉平衡树的特点,利用后序遍历,将各个节点存储到数组中,此时的数组便是从大到小排序好的,根据k值输出即可
代码实现
# 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:
tmp = []
def dfs(root):
if root:
dfs(root.right)
tmp.append(root.val)
dfs(root.left)
dfs(root)
return tmp[k - 1]