码迷,mamicode.com
首页 > 其他好文 > 详细

把二叉树打印多行

时间:2017-04-11 09:51:32      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:blog   add   while   queue   bfs   多行   另一个   题目   return   

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路:设置两个指针,一个指向当前层最右,另一个指向现在遍历的节点,,基本就是bfs。。。加一个换行判断

ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        if(pRoot==null) return new ArrayList<>();
        TreeNode last=pRoot;
           TreeNode nlast=null;
       LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
        ArrayList<Integer> temp=new ArrayList<Integer>();
        ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
        queue.add(pRoot);
        while(!queue.isEmpty()){
               TreeNode cur=queue.poll();
            temp.add(cur.val);
            if(cur.left!=null){
                queue.add(cur.left);
                nlast=cur.left;
            }
            if(cur.right!=null){
                queue.add(cur.right);
                nlast=cur.right;
            }
            if(cur==last){
                res.add(temp);
                temp=new ArrayList<Integer>();
                last=nlast;
            }
        }
        return res;
    }

 

把二叉树打印多行

标签:blog   add   while   queue   bfs   多行   另一个   题目   return   

原文地址:http://www.cnblogs.com/team42/p/6691797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!