剑指 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 };