找出BST上任意节点的下一个节点
来源:互联网 发布:利拉德数据 编辑:程序博客网 时间:2024/05/03 05:04
思路:
CC150的解法是有用到parent指针。
就是看看有没有右孩子,如果有,则好办,直接找右子树的最小值。
如果没有则,往上(parent)找,直到找到某个parent比当前值大!
package Tree_Graph; import CtCILibrary.TreeNode; public class S4_6 { // 有parent指针的情况,分有右孩子和没有右孩子两种情况 public static TreeNode inorderSucc(TreeNode node) { if(node == null) { return null; } if(node.right != null) { // 有右孩子 return leftMostChild(node.right); } else { // 没有右孩子 TreeNode cur = node; TreeNode parent = node.parent;// while (parent!=null && parent.left!=cur) { while (parent!=null && node.data > parent.data) { cur = parent; parent = parent.parent; } return parent; } } // 找一个树的最小节点 public static TreeNode leftMostChild(TreeNode root) { if(root == null) { return null; } while (root.left != null) { root = root.left; } return root; } public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; TreeNode root = TreeNode.createMinimalBST(array); for (int i = 0; i < array.length; i++) { TreeNode node = root.find(array[i]); TreeNode next = inorderSucc(node); if (next != null) { System.out.println(node.data + "->" + next.data); } else { System.out.println(node.data + "->" + null); } } }}
0 0
- 找出BST上任意节点的下一个节点
- 【BST】找出有重复值的BST中值为key的第一个节点
- 找二叉树节点的下一个节点
- 找出二叉树上任意两个节点的最近共同父节点
- 找出二叉树中任意两个节点的最低公共父节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 二叉树的下一个节点
- 找出二叉树中和最大的路径,路径可以从任意节点开始,到任意节点结束。
- C++STL技术
- Android获取验证码后倒计时程序
- jquery.uploadify-3.1+servlet实现多文件的上传和下载文件存储到BLOB中
- VUA814-The Letter Carrier's Rounds(入门经典5-11,PE)
- MySQL调优
- 找出BST上任意节点的下一个节点
- Android 颜色渲染 PorterDuff及Xfermode详解
- nginx集群客户端分配策略
- OpenCV库highgui函数在VS2012下的内存泄露问题!
- toast 因 activity 的样式设置而变化
- 微信开发(八)自动回复和多客服开发
- 回顾:中网饱经沧桑劫后余生 万平国回首艰辛历程
- Excel使用日历控件
- netty处理粘包问题——1