54_剑指offer_java_二叉搜索树中的第k大节点

大模型训练中的AllReduce:从原理到实战,如何优化你的分布式训练效率 本文深入解析了大模型分布式训练的核心通信操作AllReduce,特别是高效的Ring All-Reduce算法原理。文章从实战角度出发,探讨了如何通过通信计算重叠、梯度累积策略、NCCL库调优以及混合并行通信优化等手段,有效降低通信开销,从而显著提升大模型训练效率。 阅读详情

目录

 

题目描述

测试用例

题目考点

解题思路

参考解题

中序遍历


题目描述

给定一棵二叉搜索树,请找出其中的第k小的结点。例如,在下图的二叉搜索树里,按节点数值大小顺序,第三大节点的值是4。

offer54

 

 

测试用例

  • 功能测试(各种形态不同的二叉搜索树)
  • 边界值测试(输入k为0、1、二叉搜索树的节点数、二叉树搜索树的节点数+1)
  • 特殊输入测试(指向二叉搜索树根节点的指针为空指针)

 

题目考点

  • 考察应聘者的只是迁移能力,利用中序遍历解题。
  • 考察应聘者对二叉搜索树和中序遍历的特点的理解。

 

解题思路

按照中序遍历的顺序遍历一个二叉搜索树。

只要熟悉中序遍历的写法,那么这道题就不难了。

 

参考解题

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    // 中序遍历
    private int k;
    
    TreeNode KthNode(TreeNode pRoot, int k)
    {    // 异常
        if(pRoot == null || k == 0){
            return null;
        }
        this.k = k;
        return KthNodeCore(pRoot);
    }
    
    // 中序遍历第k个元素
    public TreeNode KthNodeCore(TreeNode pRoot){
        TreeNode target = null;
        
        if(pRoot.left != null){
            target = KthNodeCore(pRoot.left);
        }
        
        if(target == null){
            // 走到最左边?
            if(k == 1){
                target = pRoot;
            }
            k--;
        }
        
        if(target == null && pRoot.right != null){
            target = KthNodeCore(pRoot.right);
        }
        
        return target;
    }
    


}

 

中序遍历

class TreeNode{
    public int data;
    public TreeNode leftChild;
    public TreeNode rightChild;
    public static void inOrderTraversal(TreeNode node){
        if(node == null){
            return;
        }else{
            inOrderTraversal(node.leftChild);
            System.out.println(node.data);
            inOrderTRaversal(node.rightChild);
        }
    }
}

 

RH850从0搭建Autosar开发环境【6】- Davinci Configurator之CanIf模块配置详解(下) 阅读详情

相关推荐

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python >= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

leetcode 面试题54. 二叉搜索树的第k大节点

面试题54. 二叉搜索树的第k大节点 难度简单29 给定一棵二叉搜索树,请找出其中第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 解题思路: 本文解法基于...

fang156239305的博客 297

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n

Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。

3081

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

文章目录剑指 Offer 54. 二叉搜索树的第k大节点解法一:中序遍历Java代码解法二:小顶堆Java代码总结 剑指 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

YouMing_Li的博客 1083

从报错到成功:手把手教你避坑clusterProfiler安装全流程

本文详细解析了clusterProfiler安装过程中的常见报错及解决方案,从CRAN安装误区到Bioconductor拼写错误,再到依赖包安装失败等问题,提供了五步正确安装法。特别适合生物信息分析新手快速掌握R包安装技巧,避免踩坑。

weixin_30859423的博客 379

VS(QT)调用Matlab函数的方法

调试–>窗口–>异常设置–>Win32 Exceptions全部不要勾选。选择Microsoft Visual C++ 2017。将生成的.h和.lib分别放置在对应的文件夹。输入mex -setup C++输入deploytool选择。选择Realse x64。

woshigaowei5146的博客 591

二叉搜索树的第k个节点(java版)

【题目描述】给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。【解题思路1】 //1. 二叉搜素树的中序遍历访问队列,自然的满足升序排序的条件。 //2. 中序遍历二叉搜索树,暂存输出队列。 //3. 从保存的输出队列中找到满足条件的值。import java.util.ArrayList; publ

3673

nicegui 可视化扩展库

总体来说,这段代码使用nicegui库创建了一个具有一些基本UI元素的界面,并使用扩展库来实现更多的布局功能。这段代码使用了nicegui库创建了一个UI界面。函数导入了一个扩展库,用于实现更多的布局功能。然后又使用了一个行布局,并添加了两个按钮(在UI界面中,使用了一个卡片(在行布局中依次添加了一个标签(在卡片中使用了一个头像(接下来使用了一个行布局(设置了背景颜色为绿色。设置了居中对齐和红色。设置了间距和字体大小。设置了居中对齐和样式。设置了按钮的对齐方式。

东方佑 1020

二叉搜索树的第K大节点(leetcode每日打卡)

目录 题解 代码 题解 本文解法基于此性质:二叉搜索树的中序遍历为递增序列 根据以上性质,易得二叉搜索树的 中序遍历倒序 为 递减序列 。 因此,求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点”。 题目指出:1≤k≤N (二叉搜索树节点个数);因此无需考虑 k > N 的情况。 若考虑,可以在中序遍历完成后判断 k>0 是否成立,若成立则说明 k > N 。 代码 class Solution { int res, k; ..

m0_60264772的博客 692

目标检测YOLO实战应用案例100讲-基于YOLOv7的番茄采摘机械手场景感知及试验(下)

根据软件系统的设计需求,制定系统的可行性方案分析,编写系统的相关程序和 调试运行环境,对系统进行测试,以实现对番茄数据的采集及监测。登陆界面登陆后,进入选择界面,菜单包括了对番茄种植棚室的固定相机数据的监测、 对番茄采摘机械手的双目相机采集的番茄的静态、动态数据的获取、对番茄静态、动态数 据处理的功能菜单等选项。与利用人工去进行对于番茄果实的识别和数目的统计相比,番茄视觉系统自动记录番 茄数量以及红色已经成熟的番茄、青色未成熟番茄的数量,减轻人工记录的工作量,减少 人工记录的误差,从经济方面是可行的。

qq_36130719的博客 812

银河麒麟硬盘健康检测:smartctl/badblocks实战与坏盘预判

xfs_repair检查。S.M.A.R.T检测。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 859

来几道简单的题(C++)

二叉搜索树的第k大节点 二叉搜索树的最近公共祖先 和为s的两个数字 扑克牌中的顺子

weixin_45599288的博客 492

ChatGPT充值,银行卡被拒绝,图文教程

ChatGPT充值,银行卡被拒绝

weixin_46713695的博客 2万+

剑指offer54 二叉搜索树的第K大节点 Java

public class BinaryTreeK54 { static class Node { int val; Node left; Node right; public Node(int val) { this.val = val; } @Override ...

weixin_43065507的博客 173

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

剑指 Offer 54. 二叉搜索树的第k大节点【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 给定一棵二叉搜索树,请找出其中第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 ≤二叉搜索树元素个数

林深不见鹿 的博客 2010

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点(Java)

给定一棵二叉搜索树,请找出其中第k大的节点。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { List<Integer> list = new ArrayL

小楊同学的笔记本 265

剑指offer第二版54题:二叉搜索树的第K大节点Java

目录题目 题目 题目:给定一棵二叉搜索树,请找出其中第K大的节点。例如,在图1中的二叉搜索树里,按节点数值大小顺序,第三大节点的值是4。 图1 ...

dabusiGin的博客 459

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

1.思路 中序遍历可以得到递增的序列,所以寻求第k大的数,就用中序遍历的倒序(即先遍历右子树,再根节点,最后左子树) 2.代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution {

乾坤未定,你我皆是黑马 275

剑指Offer54:二叉搜索树的第k大节点(Java)

题目描述: 解法思路:     根据题目意思,要找二叉搜索树的第k大节点。那么我们可以想一下,如果我们要找二叉树的最小节点要怎么找呢?直接中序遍历就能找到最左的节点,最左的节点也就是最小的节点。同理,我们要找最大节点,只需要把中序遍历改一下即可,中序遍历的顺序是左 -> 根 -> 右,那么我们改成右 -> 根 -> 左。因为题目是找到第k大,那么直接判断k是否等于1,k不等于1,就k减去1,返回上一层,当k等于1,记录节点值。最后返回节点值即可。 代码实现: class Solut

程序猿小龙的博客 256

Java描述 LeetCode,剑指 Offer 54. 二叉搜索树的第k大节点

二叉搜索树的逆中序遍历是递减序列

人在江湖 474

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

二叉搜索树的第k大节点做题博客链接题目链接描述示例初始代码模板代码 做题博客链接 https://blog.youkuaiyun.com/qq_43349112/article/details/108542248 题目链接 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/ 描述 给定一棵二叉搜索树,请找出其中第k大的节点。 限制: 1 ≤ k ≤ 二叉搜索树元素个数 示例 示例 1: 输入: root = [

博主是个二次元死肥宅~ 242

剑指 Offer 54. 二叉搜索树的第k大节点(简单)Java

题目描述: 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例: 思路: 创建一个 List , 将所有节点放到 List 中,取出 List 长度 减去 k 的值 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;

你是我の唯一博客 206

【java】剑指offer54_二叉搜索树的第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 限制:1 ≤ k ≤ 二叉搜索树元素个数 参考解题思路:利用二叉搜索树的特性(左...

ic_xcc的博客 176

【Java题解】剑指 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.

Moneys的博客 212

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

给定一棵二叉搜索树,请找出其中第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 ≤ 二叉搜索树元素个数 来源:力扣(LeetCode) 链接:h

蜂鸟的学习笔记 189

[剑指offer]面试题第[54]题[JAVA][二叉搜索树的第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 【解答思路】 反向中序遍历 遍历到第k个节点时,直接返回改节点值,如果未找到

dadongwudi的博客 233

【leetcode】剑指 Offer 54. 二叉搜索树的第k大节点(Java)

题目描述 题目连接剑指 Offer 54. 二叉搜索树的第k大节点 题解 中序遍历: 二叉搜索树中序遍历是从小到大。先遍历右子树,再遍历左子树,就变成从大到小了。用target计数,target等于0时,就是我们要找的第K大节点 class Solution { int res = 0; int target = 0; public int kthLargest(TreeNode root, int k) { target = k; dfs(root

weixin_44190665的博客 408
上一篇: 多线程_插队join
下一篇: 55_剑指offer_java_二叉树深度 + 平衡二叉树
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值