从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
public class Solution {
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
Queue<TreeNode> q1 = new LinkedList<>();
Queue<TreeNode> q2 = new LinkedList<>();
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
if (pRoot == null) {
return lists;
}
q1.add(pRoot);
while (!q1.isEmpty() || !q2.isEmpty()) {
add(q1, q2);
add(q2, q1);
}
return lists;
}
private void add(Queue<TreeNode> q11, Queue<TreeNode> q22) {
ArrayList<Integer> temp = new ArrayList<>();
while (!q11.isEmpty()) {
TreeNode t = q11.poll();
if (t != null) {
temp.add(t.val);
if (t.left != null) {
q22.add(t.left);
}
if (t.right != null) {
q22.add(t.right);
}
}
}
if (!temp.isEmpty()) {
lists.add(temp);
}
}
}