1. 程式人生 > 其它 >劍指 Offer 54. 二叉搜尋樹的第k大節點(簡單)

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