题解 | #把二叉树打印成多行#

把二叉树打印成多行

http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288

二叉树的广度优先遍历

public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> res=new ArrayList();
        LinkedList<TreeNode> queue=new LinkedList();
        if(root==null){
            return res;
        }
        queue.add(root);
        while(!queue.isEmpty()){
            TreeNode temp=queue.removeFirst();
            res.add(temp.val);
            if(temp.left!=null){
            queue.add(temp.left);}
            if(temp.right!=null){
            queue.add(temp.right);}
        }
        return res;

    }
}

在原有的基础上分开打印每层的节点,只需出队前判断记录当前的队列节点个数,循环出队即可

public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
       LinkedList<TreeNode> link=new LinkedList();
        ArrayList<ArrayList<Integer>> res=new ArrayList();
        if(pRoot==null){
            return res;
        }
        link.add(pRoot);        
        while(!link.isEmpty()){
            int size=link.size();//出队前判断当前层节点个数
            ArrayList<Integer> list=new ArrayList();//存储当前层节点的集合
            while(size>0){
            TreeNode node=link.removeFirst();//出队
            list.add(node.val);
            size--;
            if(node.left!=null){//入队当前节点左右子节点
                link.add(node.left);               
            }
            if(node.right!=null){
                link.add(node.right);              
            } 
            }
            res.add(list);          
        }
        return res;    
    }   
}
全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务