二叉树的下一个节点
抄自剑指offeroffer
由于步骤要分很多中情况,我就把照片贴这里(懒)
注意(这个二叉树可以找父节点,就是parent节点,和一般二叉树稍微有区别)
贴代码:
public class Main {
Node root;
Node GetNext(Node root){
if(root==null){
return null;
}
Node pNext=null;
if(root.right!=null){
Node pRight=pNext.right;
while(pRight.left!=null){
pRight=pRight.left;
}
pNext=pRight;
}else if(root.parent!=null){
Node pCurrent=root;
Node pParent=root.parent;
while(pParent!=null&&pCurrent==pParent.right){
pCurrent=pParent;
pParent=pParent.parent;
}
pNext=pParent;
}
return pNext;
}
}
class Node{
int data;
Node left;
Node right;
Node parent;
Node(int data){
this.data=data;
this.left=null;
this.right=null;
this.parent=null;
}
}