二叉树的下一个节点

抄自剑指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;
    }
}

 

 

 

 

 

posted @ 2019-09-23 15:32  _SpringCloud  阅读(3)  评论(0编辑  收藏  举报  来源