当前位置: 首页 > news >正文

剑指Offer系列(java版,详细解析)54.二叉搜索树的第K大的节点

题目描述

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

难度简单148收藏分享切换为英文接收动态反馈

给定一棵二叉搜索树,请找出其中第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为0、1、二叉搜索树的节点数、二叉树搜索树的节点数+1)
  • 特殊输入测试(指向二叉搜索树根节点的指针为空指针)

题目考点

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

解题思路

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

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

自己解题

class Solution {
    int res, k;
    public int kthLargest(TreeNode root, int k) {
        this.k = k;
        dfs(root);
        return res;
    }
    void dfs(TreeNode root) {
        if(root == null) return;
        dfs(root.right);
        if(k == 0) return;
        if(--k == 0) res = root.val;
        dfs(root.left);
    }
}

参考解题

见自己解题。

相关文章:

  • 剑指Offer系列(java版,详细解析)55.二叉树的深度
  • 剑指Offer系列(java版,详细解析)56.数字中数字出现的次数
  • 剑指Offer系列(java版,详细解析)57.和为s的数字
  • 剑指Offer系列(java版,详细解析)58.翻转字符串
  • 剑指Offer系列(java版,详细解析)59.队列的最大值
  • 剑指Offer系列(java版,详细解析)60.n个骰子的点数
  • 剑指Offer系列(java版,详细解析)61.扑克牌中的顺子
  • 剑指Offer系列(java版,详细解析)62.圆圈中最后剩下的数字
  • 剑指Offer系列(java版,详细解析)63.股票的最大利润
  • 剑指Offer系列(java版,详细解析)64.求1+2+...+n
  • 剑指Offer系列(java版,详细解析)65.不用加减乘除做加法
  • 剑指Offer系列(java版,详细解析)66.构建乘积数组
  • 剑指Offer系列(java版,详细解析)67.把字符串转化成整数
  • 剑指Offer系列(java版,详细解析)68.树中两个节点的最低公共祖先
  • Go语言fmt.Sprintf(格式化输出)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 10个最佳ES6特性 ES7与ES8的特性
  • conda常用的命令
  • css系列之关于字体的事
  • GraphQL学习过程应该是这样的
  • Objective-C 中关联引用的概念
  • Redis字符串类型内部编码剖析
  • Terraform入门 - 1. 安装Terraform
  • underscore源码剖析之整体架构
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 老板让我十分钟上手nx-admin
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 深度解析利用ES6进行Promise封装总结
  • 一些关于Rust在2019年的思考
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​一些不规范的GTID使用场景
  • (31)对象的克隆
  • (done) 两个矩阵 “相似” 是什么意思?
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (SpringBoot)第二章:Spring创建和使用
  • (二)c52学习之旅-简单了解单片机
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • *1 计算机基础和操作系统基础及几大协议
  • .gitattributes 文件
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net framework profiles /.net framework 配置
  • .Net Memory Profiler的使用举例
  • .NET 使用配置文件
  • .NET业务框架的构建
  • .net中生成excel后调整宽度
  • ::
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [android] 天气app布局练习
  • [Android]一个简单使用Handler做Timer的例子
  • [CodeForces-759D]Bacterial Melee
  • [Excel VBA]单元格区域引用方式的小结
  • [Grafana]ES数据源Alert告警发送