【主要考察点】:树
解题方法
1. 广度优先搜索
树的层序遍历可以借助队列来实现,只要依次入队每一层的元素,并记录其数量,然后只要一层一层遍历即可。
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if(root == null){
return ans;
}
Queue<TreeNode> queue = new ArrayDeque<>();
queue.add(root);
while(!queue.isEmpty()){
List<Integer> level = new ArrayList<>();
// 记录每一层的元素个数
int levelSize = queue.size();
for(int i = 0; i < levelSize; i++){
// 挨个遍历这些元素,并入队每一个元素的左右子树。
TreeNode node = queue.poll();
level.add(node.val);
if(node.left != null){
queue.add(node.left);
}
if(node.right != null){
queue.add(node.right);
}
}
// 一层遍历结束
ans.add(level);
}
return ans;
}
}