剑指Offer-62.二叉搜索树的第k个结点(C++/Java)
题目:
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
分析:
二叉搜索树的中序遍历结果正好是按数值升序排列的结果,我们可以利用前序遍历将结点按val值的顺序存储到数组中,然后直接按索引返回即可。
程序:
C++
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot == nullptr)
return pRoot;
helper(pRoot);
if(k > res.size() || k < 1)
return nullptr;
return res[k-1];
}
void helper(TreeNode* pRoot){
if(pRoot == nullptr)
return;
helper(pRoot->left);
res.push_back(pRoot);
helper(pRoot->right);
}
private:
vector<TreeNode*> res;
};
Java
import java.util.*;
public class Solution {
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot == null)
return pRoot;
helper(pRoot);
if(k < 1 || k > list.size())
return null;
return list.get(k-1);
}
void helper(TreeNode pRoot){
if(pRoot == null)
return;
helper(pRoot.left);
list.add(pRoot);
helper(pRoot.right);
}
private ArrayList<TreeNode> list = new ArrayList<>();
}
剑指Offer-62.二叉搜索树的第k个结点(C++/Java)的更多相关文章
- 剑指offer 62. 二叉搜索树的第 k 个结点
62. 二叉搜索树的第 k 个结点 题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 法一: 非递归中序 ...
- 剑指Offer 62. 二叉搜索树的第k个结点 (二叉搜索树)
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 例如, 5 / \ 3 7 / \ / \ 2 4 6 ...
- [剑指Offer] 62.二叉搜索树的第k个结点
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. [思路]遍历二叉搜索树,存入一个vector ...
- 【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)
[剑指Offer]二叉搜索树的第k个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...
- 剑指offer:二叉搜索树的第k个结点(中序遍历)
1. 题目描述 /* 给定一棵二叉搜索树,请找出其中的第k小的结点. 例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. */ 2. 思路 中序遍历二叉搜索树,第K个就 ...
- 【Java】 剑指offer(54) 二叉搜索树的第k个结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 给定一棵二叉搜索树,请找出其中的第k小的结点. 思路 设置全局变量 ...
- 力扣 - 剑指 Offer 54. 二叉搜索树的第k大节点
题目 剑指 Offer 54. 二叉搜索树的第k大节点 思路1 二叉搜索树的特性就是中序遍历结果为递增序列,而题目要求的是第 k 大节点,所以就应该是要遍历结果为降序, 按照先遍历左子树.输出节点.遍 ...
- Go语言实现:【剑指offer】二叉搜索树的第k个的结点
该题目来源于牛客网<剑指offer>专题. 给定一棵二叉搜索树,请找出其中的第k小的结点.例如,(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. Go语言实现: ...
- 剑指offer——59二叉搜索树的第k大节点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 题解: 考察的就是中序遍历 不过注意进行剪枝 cl ...
- 每日一题 - 剑指 Offer 54. 二叉搜索树的第k大节点
题目信息 时间: 2019-07-04 题目链接:Leetcode tag:二叉搜索树 中序遍历 递归 难易程度:中等 题目描述: 给定一棵二叉搜索树,请找出其中第k大的节点. 示例1: 输入: ro ...
随机推荐
- eclipse 导入项目报错
eclipse 导入项目报错 用的是jsp的项目,svn下来以后发现很多地方都报错,看了一圈下来,大部分的报错都是因为一些基本的jsp页面的import部分报错,但是import的都是java自带的包 ...
- 力扣1083(MySQL)-销售分析Ⅲ(简单)
题目: Table: Product Table: Sales 编写一个SQL查询,报告2019年春季才售出的产品.即仅在2019-01-01至2019-03-31(含)之间出售的商品. 以 任意顺序 ...
- 阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题
简介: 今天来聊一聊阿里巴巴 Seata 新版本(1.5.1)是怎么解决 TCC 模式下的幂等.悬挂和空回滚问题的. 作者:朱晋君 大家好,我是君哥. 今天来聊一聊阿里巴巴 Seata 新版本(1 ...
- EventBridge消息路由|高效构建消息路由能力
简介:企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景.本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 EventBridg ...
- 当Java遇上机密计算,又一段奇幻之旅开始了!
简介: 汪少军:如何为Java业务提供机密计算保护? 写在前面 在信息世界里,数据存在三种状态: 存储态.传输态和计算态.存储在数据库或磁盘中的数据属于存储状态,在网络中传输的数据属于传输状态, ...
- SAP集成技术(二)接口库
目前还没有一个集中的地方能找到全部SAP接口,它们分散在几个不同的地方. 本文链接:https://www.cnblogs.com/hhelibeb/p/17843509.html 内容部分来自< ...
- Vue的Vue-ls使用
Vue插件,用于从Vue上下文中使用本地Storage,会话Storage和内存Storage 1. 安装 NPM npm install vue-ls --save YARN yarn add vu ...
- IDEA 2020 Maven编译问题:Error:(3, 32) java: 程序包org.springframework.boot不存在。
今天在编译Maven项目时,包已经加载好了,也进行了打包,途中均没有报错.package -- Install -- test 都没用问题,但是,一致性run,就会一直报错,如图 检查打包位置,包也在 ...
- k8s其它学习链接
k8s弹性伸缩概念以及测试用例 https://www.cnblogs.com/jasonboren/p/11493347.html CKA看这一篇就够了 k8s官网 k8s基础之六 有状态和无状态的 ...
- 记录一次对MQTT协议的渗透测试经历
前言 由于工作需要,特意翻查了MQTT的相关漏洞,并一一学习复现,在此做以学习记录,没有恶意,如有抄袭,请私信作者删除. 技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等 ...