题解 | #二叉树的下一个结点#

二叉树的下一个结点

https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

import java.util.*;
/*
public class TreeLinkNode {
    int val;
    TreeLinkNode left = null;
    TreeLinkNode right = null;
    TreeLinkNode next = null;

    TreeLinkNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode) {
        //若有右子树,则直接返回右子树下最左边的节点
        if(pNode.right!=null){
            pNode=pNode.right;
            while(pNode.left!=null){
                pNode=pNode.left;
            }
            return pNode;
        }
        //若没有右子树
        //且是父亲的左孩子,则直接返回父亲节点
        if(pNode.next!=null&&pNode.next.left==pNode){
            return pNode.next;
        }
        //若没有右子树
        //且是父亲的右孩子,则一直向上找到上级是上上级的左孩子,返回上上级
        if(pNode.next!=null){
            pNode=pNode.next;
		  //要是是右孩子还得往上找
            while(pNode.next!=null&&pNode.next.right==pNode){
                 pNode=pNode.next;
            }
                return pNode.next;
        }
            return null;
        }
        
    }

全部评论

相关推荐

不愿透露姓名的神秘牛友
04-25 10:45
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务