题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
示例1
输入
{8,6,10,5,7,9,11}
返回值
[[8],[6,10],[5,7,9,11]]
代码:
import java.util.*;
public class Solution {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
if (pRoot == null) {
return list;
}
Queue<TreeNode> que = new LinkedList<>();
Stack<TreeNode> st = new Stack<>();
que.add(pRoot);
while (!que.isEmpty()) {
int size = que.size();
ArrayList<Integer> temp = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode p = que.poll();
if (p.left != null) {
que.add(p.left);
}
if (p.right != null) {
que.add(p.right);
}
temp.add(p.val);
}
list.add(new ArrayList<>(temp));
}
return list;
}
}
思路概述:
二叉树层序遍历,用一个队列存储,在遍历时,记得不要直接拿着队列大小循环,要用一个size去记录,用size作为循环条件。因为队列在不断弹出元素和添加元素子结点时,大小会变化