劍指 Offer 54. 二叉搜尋樹的第k大節點(簡單)
阿新 • • 發佈:2021-08-31
通過率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 };