首页 > 代码库 > 把二叉树打印多行

把二叉树打印多行

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

思路:设置两个指针,一个指向当前层最右,另一个指向现在遍历的节点,,基本就是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;
    }

 

把二叉树打印多行