树-二叉树中某个节点的下一个节点
2016-04-25 17:05
465 查看
问题描述:
给定一个二叉树,查找某个节点的下一个节点思考:略
代码(java):
public class FindNextNode { static class Node{ private int val; private Node left; private Node right; private Node parent; public Node(int val) { this.val = val; } @Override public String toString() { return val + ""; } } public static Node findNextNode(Node thisNode){ if (thisNode == null) { return null; } Node next = null; //1,节点有右子树,那么它的下一个节点就是它右子树最左节点 if(thisNode.right != null){ next = thisNode.right; while(next.left != null){ next = next.left; } return next; } //2,节点没有右子树,他是父节点的左儿子,下一个节点就是父节点 if(thisNode.right == null || thisNode.parent.left == thisNode){ return thisNode.parent; } //3,,节点没有右子树,他是父节点的右儿子,那么使用parent指针知道找到一个节点,这个节点是它父亲的左节点,那么next为这个节点的父亲 //next == null是找到根的时候,所以就没有下一个节点 if(thisNode.right == null || thisNode.parent.right == thisNode){ next = thisNode; while(next.parent.left != next || next != null){ next = next.parent; } return next; } return next; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树