Prove safety Offer60: the binary tree print into multiple lines (Java)

Ideas analysis

Follow the previous question "binary zigzag print the order," the idea of ​​tiered with two queues, a queue is empty when the means to traverse this layer is over.

Title Description

Printing the binary tree in layers from top to bottom, from left to right with the output layer node. Each line of output layer.

Java code:

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    ArrayList<ArrayList<Integer> > res=new ArrayList<>();
    Queue<TreeNode> que1=new LinkedList<>();
    Queue<TreeNode> que2=new LinkedList<>();
    que1.offer(pRoot);//Stack,Queue都能用isEmpty()判空
        while(!que1.isEmpty()||!que2.isEmpty()){
            ArrayList<Integer> tmp1=new ArrayList<Integer>();
            ArrayList<Integer> tmp2=new ArrayList<Integer>();
            while(!que1.isEmpty()){//队列为空,即遍历了一层结点
                TreeNode node=que1.poll();
                if(node!=null){
                    tmp1.add(node.val);
                    que2.offer(node.left);
                    que2.offer(node.right);
                }
            }
            if(!tmp1.isEmpty()){
                 res.add(tmp1);
            }
            while(!que2.isEmpty()){
                TreeNode node=que2.poll();
                if(node!=null){
                    tmp2.add(node.val);
                    que1.offer(node.left);
                    que1.offer(node.right);
                }
            }
            if(!tmp2.isEmpty()){
               res.add(tmp2);
            }
        }
        return res;
    }
}

Guess you like

Origin www.cnblogs.com/dongmm031/p/12327870.html