题解 | #二叉树的下一个结点#
二叉树的下一个结点
http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
/*
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
*/
import java.util.LinkedList;
public class Solution {
LinkedList<TreeLinkNode> ll = new LinkedList<TreeLinkNode>();
public TreeLinkNode GetNext(TreeLinkNode pNode) {
if(pNode == null) return null;
TreeLinkNode head = null;
TreeLinkNode fatherNode = findfatherNode(pNode);
in_order(fatherNode);
for(int i = 0;i<ll.size();i++){
if(ll.get(i) == pNode){
if(i+1 < ll.size()){
head = ll.get(i+1);
}
}
}
return head;
}
TreeLinkNode in_order(TreeLinkNode root){
if(root == null) return null;
in_order(root.left);
ll.offer(root);
in_order(root.right);
return root;
}
TreeLinkNode findfatherNode(TreeLinkNode father){
if(father == null) return father;
while(father.next != null){
father = father.next;
}
return father;
}
}
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
*/
import java.util.LinkedList;
public class Solution {
LinkedList<TreeLinkNode> ll = new LinkedList<TreeLinkNode>();
public TreeLinkNode GetNext(TreeLinkNode pNode) {
if(pNode == null) return null;
TreeLinkNode head = null;
TreeLinkNode fatherNode = findfatherNode(pNode);
in_order(fatherNode);
for(int i = 0;i<ll.size();i++){
if(ll.get(i) == pNode){
if(i+1 < ll.size()){
head = ll.get(i+1);
}
}
}
return head;
}
TreeLinkNode in_order(TreeLinkNode root){
if(root == null) return null;
in_order(root.left);
ll.offer(root);
in_order(root.right);
return root;
}
TreeLinkNode findfatherNode(TreeLinkNode father){
if(father == null) return father;
while(father.next != null){
father = father.next;
}
return father;
}
}