剑指 Offer 54. 二叉搜索树的第k大节点(简单)

通过率 75.5%

题目链接

题目描述:

给定一棵二叉搜索树,请找出其中第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 ≤ 二叉搜索树元素个数

思路:

深搜,遍历顺序:右子树→根节点→左子树,每遍历一个非空节点,k--,直到k为0,则输出当前节点的val值,再做些剪枝处理,当前节点为空或k为0时直接return

 1 /*JavaScript*/
 2 /**
 3  * Definition for a binary tree node.
 4  * function TreeNode(val) {
 5  *     this.val = val;
 6  *     this.left = this.right = null;
 7  * }
 8  */
 9 /**
10  * @param {TreeNode} root
11  * @param {number} k
12  * @return {number}
13  */
14 var kthLargest = function(root, k) {
15     let res
16     var dfs = function(node) {
17         if(!node || !k) return
18         dfs(node.right)
19         k--
20         if(!k) res = node.val
21         dfs(node.left)
22     }
23     dfs(root)
24     return res
25 };

 

posted @ 2021-08-31 10:26  自在逍遥处  阅读(28)  评论(0编辑  收藏  举报