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

2022/3/28 23:53:23

本文主要是介绍剑指 Offer 54. 二叉搜索树的第k大节点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、题目

 

 二、题目理解

  1.因为是二叉树搜索树(二叉树排序树),所以可以用中序遍历,先右 中 后左 进行(右边最大的)

  2.每次dfs的时候 记录一次,当记录数等于 k 的时候,当前值就是最大k节点

  3.如果进行右边的时候,没有达到最大k节点,我们继续向左边的子节点进行查找,直到找到为止

三、代码

/**
 * 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 res;
    let count = 0;
    function dfs(node) {
        if( node == null ) return;
        dfs(node.right);
        count++;
        if(count == k){
            res = node.val;
            return;
        }
        dfs(node.left);
    }
    dfs(root);
    return res;
};

 



这篇关于剑指 Offer 54. 二叉搜索树的第k大节点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程