二叉树的下一个结点

二叉树的下一个结点

http://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e

思路:先用.next找到整棵树的根结点,并对这棵树采取用中序遍历和存入list中。最后再for循环找到下一个结点

import java.util.*;
public class Solution {
    ArrayList<TreeLinkNode> list = new ArrayList<TreeLinkNode>();
    public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        if(pNode==null)return null;
        TreeLinkNode Dad = findDad(pNode);
        inOrder(Dad);
        for(int i=0;i<list.size();i++){
            if(pNode == list.get(i)&&i<(list.size()-1)){
                return list.get(i+1);
            }
        }
        return null;
    }
    public TreeLinkNode findDad(TreeLinkNode pNode){
        while(pNode.next!=null)pNode=pNode.next;
        return pNode;
    }
    public void inOrder(TreeLinkNode pNode){
         if(pNode==null)return;
         inOrder(pNode.left);
         list.add(pNode);
         inOrder(pNode.right);
    }
}
全部评论

相关推荐

产品经理傅立叶:1.建议把个人信息码一下 2.简历的排版还得优化一下,看上去有点乱,另外有一个实习经历实习时间好像多写了一个; 3.实习产出要量化
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务