题目介绍
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
示例1
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4
示例2
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4
限制:
- 1 ≤ k ≤ 二叉搜索树元素个数
剑指 Offer 54.二叉搜索树的第 k 大节点
b站视频
解题思路
这道题利用二叉搜索树的特性(左子树节点的值都小于根节点的值,右子树节点的值都大于根节点的值)
利用中序遍历可以形成一个从小到大排列的数组,只需要返回数组的倒数第 k 个值就是二叉搜索树第 k 大节点的值
解题代码
var kthLargest = function(root, k) {
let res = []
res = inorder(root, res)
return res[res.length - k]
};
var inorder = function(root, res) {
if (!root) return null
inorder(root.left, res)
res.push(root.val)
inorder(root.right, res)
return res
}