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

二叉树的下一个结点

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;
    }
}
*/
首先要明白,next是结点的父指针。
然后先一直next搞到根节点,然后dfs(注意判定root不为空,否则直接返回)
再然后遍历list,找到pHead结点,然后判断,如果已经是中序遍历最后一个结点,返回NULL
如果不是,就返回它的下一个结点。
import java.util.*;
public class Solution {
    ArrayList<TreeLinkNode> a = new ArrayList<TreeLinkNode>();
    public TreeLinkNode GetNext(TreeLinkNode pNode) {
        TreeLinkNode root = pNode;//定义根节点
        while(root.next != null){
            root = root.next;//不断的向上循环直到root是根节点
        }
        dfs(root);
        for(int i = 0;i < a.size();i++){
            if(a.get(i).equals(pNode)){
                if(i != a.size()-1)
                    return a.get(i + 1);
                else return null;
            }
        }
        return null;
    }
    void dfs(TreeLinkNode root){//以递归方式实现“左根右“的中序遍历
        if(root == null)return;
        dfs(root.left);
        a.add(root);
        dfs(root.right);
    }
        
        
        
        
        
        
        
        
}
全部评论

相关推荐

在校生实习:我觉得平时学校肯定有各种大作业吧。包装一下写项目里。特长那块喧宾夺主了,项目肯定是大头。特长里比如:熟悉vscode,这个感觉不具有吸引性。简要介绍你会什么语言,什么工具等就行了。同26找实习,我是个超级菜鸡😭大家一起加油
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务