题解 | #第k轻的牛牛#

第k轻的牛牛

https://www.nowcoder.com/practice/d3b31f055b1640d9b10de0a6f2b8e6f3

知识点

树,中序遍历

解题思路

根据二叉搜索树的性质,当前节点的排名与其位置有关,

如果是左叶子节点等于前置排名+1,如果是中间节点等于前置排名+左子树节点数量+1,如果是右叶子节点等于父节点排名+1。

因此我们要使用中序遍历。

例如这棵树,初始前置排名0,根节点9,左子树不为空找到5,左子树不为空找到4,4的前置排名为0,所以4的排名为1,5的排名等于前置排名0+左子树数1+1=2,5的右子树不为空,找到7,7的左子树不为空,6的排名为前置排名2+1=3,依次类推。

Java题解

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param k int整型 
     * @return int整型
     */
   Map<Integer,Integer> map = new HashMap<>();
    public int kthLighest (TreeNode root, int k) {
        // write code here
        getOrder(root,0);
        return map.get(k);
    }

    /**
    * preNum:前置节点的排名
     */
    public int getOrder(TreeNode root, int preNum){
        int num = 1;  //节点数量
        if(root.left != null){
            num += getOrder(root.left,preNum);
        }
        map.put(num + preNum,root.val);
        if(root.right != null){
            num += getOrder(root.right,preNum + num);
        }
        return num;
    }
}

全部评论

相关推荐

06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
二月份来北京实习,虽然提前做了攻略,但是是人生第一次经历租房,全程自己搞定,所以难免还是踩坑了😅奉劝大家,租房不要只看自己的房间如何,还要看别人的房门口环境如何因为我就是那个倒霉蛋,我旁边房间额门口堆了一大堆杂物,都是另一个房间的人放在外面的,而且他门口放了几十双鞋子,冬天还好,现在是夏天,可太味了,怎么有这么多鞋啊啊啊啊,请看图片O(≧口≦)O一开始这屋里是一个人住,后来变成两个人住(他说他妈妈来北京看病暂时住,ok能体谅的)但是大概一个多月以后他妈妈回家了,无缝衔接了一位女朋友接着住,而且他的女朋友巨能买东西,我真的不得不吐槽,🥲我不管别人怎么花钱的,但是你买东西你起不来,你能不能换个时间约送上门,总是在周内或者周末的某一天早上七点多,没到起来的时间,快递员框框敲门了!!!!而且经常点外卖但是我们楼下有门禁,外卖员按响铃他俩不去解锁,一直等一直等,等到我们其他人受不了去帮解锁,吵得要死,他们像聋了一样!!!服啦!!!我的房租一个月不到1600,但是是阳隔,很不隔音,隔壁的大哥有时候会半夜吃薯片或者嗑瓜子(凌晨两三点的时候)好几次我都从梦里被嗑出来了🥲还好还剩两个月就实习结束可以回家了,呜呜想家,想我自己的窝😭
码农索隆:这也是我不喜欢合租的原因
我的租房踩坑经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务