题目描述:
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
思路:之前在剑指Offer中做过
使用队列先入先出的性质,实现层序遍历!
DFS(深度优先策略)和BFS(广度优先策略)!
BFS:常用的有两种场景:二叉树的层序遍历、最短路径问题!
代码:
1)队列
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();//结果集
Queue<TreeNode> queue = new LinkedList<>();//LinkedList也是双向队列!实现层序的逻辑
if(root == null) return res;
queue.offer(root);
while(!queue.isEmpty()){
//每次进来,先记录此时 队列的长度
int size = queue.size();//此时循环的次数就已经确定
List<Integer> temp = new ArrayList<>();
for(int i = 0;i < size;i++){
TreeNode node = queue.poll();
temp.add(node.val);
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
}
res.add(temp);
}
return res;
}
}