个人算法成长之路四十七!!!定期更新一些刷题过程中个人的思路以及理解。有兴趣的朋友们可以互动交流哈~
题目:
剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第 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
解题思路:
因为是搜索二叉树 先中序遍历 先右再中再左; 过程中看count是否等于k 是的话 res = node.val;return
代码
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {number} k
* @return {number}
*/
var kthLargest = function(root, k) {
let count = 1;
let res;
function dfs(node) {
if(res) return;
if(!node) return;
dfs(node.right);
if(k === count++){
res = node.val;
return;
}
dfs(node.left);
}
dfs(root);
return res
};