把二叉树打印成多行

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

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class Solution {
    
    ArrayList> Print(TreeNode pRoot) {
        
        ArrayList> array = new ArrayList>();
        ArrayList a = new ArrayList();
        if(pRoot == null)
            return array;
        Queue queue1 = new LinkedList();
        Queue queue2 = new LinkedList();
        queue1.add(pRoot);
        while(!queue1.isEmpty() || !queue2.isEmpty()) {
            
            while(!queue1.isEmpty()) {
                
                TreeNode node = queue1.poll();
                a.add(node.val);
                if(node.left != null)
                    queue2.add(node.left);
                if(node.right != null)
                    queue2.add(node.right);
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList();
            while(!queue2.isEmpty()) {
                
                TreeNode node = queue2.poll();
                a.add(node.val);
                if(node.left != null)
                    queue1.add(node.left);
                if(node.right != null)
                    queue1.add(node.right);
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList();
        }
        
        return array;
    }
}

你可能感兴趣的:(把二叉树打印成多行)