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

二叉树的下一个结点

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);
    }
        
        
        
        
        
        
        
        
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 16:32
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
04-05 21:13
邯郸学院 Java
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务