最新加了注释的模板:
本层拿出来,放到level中,下一层的放到q中
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//初始化两个要用的数据结构
List<List<Integer>> result = new LinkedList<List<Integer>>();
Queue<TreeNode> q = new LinkedList<TreeNode>();
//先定义退出的条件。是返回一个空的,不是返回完全的null
if (root == null) {
return result;
}
//推第一个根节点进去
q.offer(root);
//while这一层不是空
while (!q.isEmpty()) {
//测量Q的大小,表示目前的这一层
int size = q.size();
//建立新的数据结构
List<Integer> level = new LinkedList<Integer>();
//for循环放进去,注意此处要用固定的本层q的size
for (int i = 0; i < size; i++) {
//本层拿出来,放到level中。以前的q作为这一层。
TreeNode node = q.poll();
level.add(node.val);
//下一层的放到q中
if (node.left != null) {
q.offer(node.left);
}
if (node.right != null) {
q.offer(node.right);
}
}
result.add(level);
}
return result;
}
}