“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
今天写了二叉树的中序遍历,所以打算把热题100中关于二叉树的题,都解一遍,方便大家专项学习
一、题目描述
- 给你二叉树的根节点
root,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
二、思路分析
-
这道题可以用BFS或DFS进行解题
-
我选用BFS,他是从上到下从左到右进行扫荡,和题目要求一致
-
BFS需要用到队列,进行存取
三、AC 代码:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//创建返回结果的数组集合
List<List<Integer>>res = new ArrayList<List<Integer>>();
//为空直接返回
if(root == null){
return res;
}
//创建链表
Queue<TreeNode> queue = new LinkedList<TreeNode>();
//将根节点存入链表
queue.add(root);
//边界条件不为空才循环轮询
while(!queue.isEmpty()){
//循环次数
int size = queue.size();
//新建存放的集合
List<Integer>list = new ArrayList<Integer>();
for(int i = 0;i<size;i++){
//拿出根节点
TreeNode node = queue.remove();
//左子树不为空则存入左子树
if(node.left != null){
queue.add(node.left);
}
//右子树不为空则存入右子树
if(node.right != null){
queue.add(node.right);
}
//存入当前节点
list.add(node.val);
}
//将当前集合存入结果集合
res.add(list);
}
return res;
}
}
四、总结:
- 好了,代码撸完,我们
总结一下:-
首先创建队列
-
队列中的根节点存入
-
之后取出存入集合,并存入左右子树的根节点
-