面试题:把二叉树打印成多行
题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:借助队列实现
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode root) { ArrayList<ArrayList<Integer>> result=new ArrayList<>(); if(root==null) return result; Queue<TreeNode> queue=new LinkedList<>(); queue.add(root); while(!queue.isEmpty()){ int curNodeNum=queue.size(); ArrayList<Integer> temp=new ArrayList<>(); while(curNodeNum>0){ TreeNode node=queue.poll(); temp.add(node.val); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); curNodeNum--; } result.add(temp); } return result; } }