题目描述

给定一颗二叉搜索树,请找出其中的第k小的结点。例如, 5 /  3 7 / / 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。

解题思路

二叉搜索树的中序遍历得到的结果就是以小到大的排序顺序,因此可以使用中序遍历,每次遍历记录当前结点是第几个结点,当到期望的结点时,返回。

实现

/*树结点的定义*/
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}
/*实现*/
public class Solution {TreeNode KthNode(TreeNode pRoot, int k){Result re = kThNode(pRoot, k, 0);return re.node;}private Result kThNode(TreeNode pRoot, int k, int cur) {if (pRoot == null) return new Result(null, cur);Result rl = kThNode(pRoot.left, k , cur);if (rl.k == k) return rl;cur = rl.k + 1;if (cur == k) return new Result(pRoot, k);Result rr =  kThNode(pRoot.right, k, cur);if (rr.k == k) return rr;return new Result(null,rr.k);}private class Result{TreeNode node;int k; //第几个数据public Result(TreeNode node, int k){this.node = node;this.k = k;}}
}

转载于:https://www.cnblogs.com/ggmfengyangdi/p/5828864.html

剑指Offer_62_二叉搜索树的第k个结点相关推荐

  1. 二叉搜索树的第k个节点java_剑指Offer62:二叉搜索树的第k个结点(Java)

    思路分析: 首先了解搜索二叉树在中序遍历下的结果是有序的.设一个全局变量num记录次数,每当中序遍历到一个节点时,num++.当num等于k时,返回node即结果. 难在递归上 题目描述 给定一棵二叉 ...

  2. 剑指offer-JZ54 二叉搜索树的第k个节点(附思路)

    描述 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值. 1.返回第k小的节点值即可 2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 3.保证 ...

  3. 剑指offer——面试题63:二叉搜索树的第k个结点

    剑指offer--面试题63:二叉搜索树的第k个结点 Solution1: 20180916重做 /* struct TreeNode {int val;struct TreeNode *left;s ...

  4. 《剑指Offer》51. 二叉搜索树的第k个结点

    题目:51. 二叉搜索树的第k个结点 知识点:二叉搜索树 题目描述: 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为 ...

  5. [剑指offer]二叉搜索树的后序遍历数列

    [剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...

  6. 牛客题霸 [二叉搜索树的第k个结点]C++题解/答案

    牛客题霸 [二叉搜索树的第k个结点]C++题解/答案 题目: 给定一棵二叉搜索树,请找出其中的第k小的结点. 题解: 二叉搜索树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它 ...

  7. 剑指offer:二叉搜索树的第k个结点(中序遍历)

    1. 题目描述 /*给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. */ 2. 思路 中序遍历二叉搜索树,第K个就是结 ...

  8. C#刷剑指Offer | 二叉搜索树的后序遍历序列

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  9. [剑指offer] 二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...

  10. 剑指offer——二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 这里遇到的问题就是,传递的子数组怎 ...

最新文章

  1. 模拟文件上传(一):手动文件上传
  2. 由于分形导致的神经网络分类误差
  3. python转csv_python如何将列表存储为csv文件
  4. ST17H26移植软时钟代码
  5. python向量机使用方法_Python中支持向量机SVM的使用方法详解
  6. 【APICloud系列|24】 MNNavigationMenu模块(导航菜单)的实现
  7. 神经网络模型模型转ONNX
  8. h5+js调取相机做取景框_iPhone 12 相机操作指南,用好了随手一拍就是大片!
  9. JavaScript性能优化之加载与执行
  10. css3美话网页元素
  11. x[:,n]或者x[n,:]的用法
  12. 如何免费复制网页内容
  13. 前沿Perspective | 空间转录组数据分析方法最新进展
  14. 【建模算法】层次分析法(Python实现)
  15. 3dmax运动混合器的使用
  16. 『随笔』基本功与招式
  17. 中富金石投教怎么样?让专业投资创造更多财富机会
  18. PDF转换器用什么好?这款一定能够帮到你
  19. 数据资本时代:市场与公司
  20. 重构类关系-Replace Inheritance with Delegation以委托取代继承十一

热门文章

  1. 架构师都应该知道的康威定律
  2. 薄荷Toolbar(ActionBar)的适配方案
  3. linux下alias命令具体解释
  4. Unity3d Vector3
  5. 2008总有一种恐惧让你泪流满面
  6. Android eclipse sdk包升级
  7. servlet,listener,filter,interceptor的关系
  8. Java面试题中的Redis大合集,所有你想找的都在这里!
  9. MyBatis学习总结(三)---映射文件及引入方式
  10. 细说GIT分布式版本控制器