[路飞]_算法成长之路四十七,二叉搜索树的第k大节点

121 阅读1分钟

个人算法成长之路四十七!!!定期更新一些刷题过程中个人的思路以及理解。有兴趣的朋友们可以互动交流哈~

题目:

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