序言
本题比较简单,二叉树深度递归即可得到结果。如您已经算法入门,不必观看本文;本文仅供记录作者学习算法过程。
题目
给定一棵二叉搜索树,请找出其中第k大的节点。
示例1
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4
题解
已知:二叉树为二叉搜索树;给这个条件有什么用呢?二叉搜索树中序遍历是递增的;
搜索二叉树定义:根节点左侧元素全部小于根节点自身;根节点右侧元素全部大于根节点;
DFS遍历二叉树返回倒数第K个元素即可
或者数组中只保存k个元素,返回第一个元素即可
var kthLargest = function(root, k) {
let list = [];
helper(root,k)
return list[0]
function helper(node){
if(list.length > k) list.shift()
if(node === null) return 0
helper(node.left)
list.push(node.val)
helper(node.right)
}
};