剑指Offer_62_二叉搜索树的第k个结点
来源:互联网 发布:深入解析wpf编程 pdf 编辑:程序博客网 时间:2024/06/16 16:24
题目描述
给定一颗二叉搜索树,请找出其中的第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; } }}
0 0
- 剑指Offer_62_二叉搜索树的第k个结点
- 剑指offerr--二叉搜索树的第k个结点
- 《剑指offer》二叉搜索树的第k个结点
- 剑指offer:二叉搜索树的第k个结点
- [剑指offer]二叉搜索树的第k个结点
- 剑指offer-二叉搜索树的第k个结点
- 【剑指Offer】二叉搜索树的第k个结点
- 剑指offer 二叉搜索树的第k个结点
- 剑指offerr--二叉搜索树的第k个结点
- 剑指Offer:二叉搜索树的第K个结点
- 剑指offer-二叉搜索树的第k个结点
- 剑指Offer------二叉搜索树的第k个结点
- 剑指offer---二叉搜索树的第k个结点
- 【二叉树】二叉搜索树的第k个结点
- 二叉搜索树第k个结点
- 【树14】二叉搜索树的第k个结点
- 二叉搜索树的第k个结点
- 二叉搜索树的第k个结点
- 红外路由器的操作记录
- elasticsearch2.3.1 集群安装
- getServerPort(), getLocalPort(), and getRemotePort()的具体含义
- GoF著作中未提到的设计模式(4):Double Dispatch
- nginx自动跳转网页(proxy_pass)
- 剑指Offer_62_二叉搜索树的第k个结点
- 重载、覆盖和隐藏
- 二分查找
- 通过XAMPP访问phpmyadmin管理mysql数据库
- Mysql入门(六)之联合查询
- canvas像素化处理
- java 包装类学习
- IOS:国际化APP内部切换
- App工程结构搭建:几种常见Android代码架构分析