LeetCode 102.二叉树的层序遍历
题目:
二叉树的层序遍历。
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
思路:
- 层序遍历,从最上层到最下层,可以用BFS。
- 把树的每一层当前节点的左子节点、右子节点,放入到队列中。
- 队列Queue 的初始化,可以用 ArrayList 或者 LinkedList。
- 入列用 add/ offer, 出列用 poll 。
代码:
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> resultList = new ArrayList<>();
if (root==null) {
return resultList;
}
//队列的泛型用TreeNode
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
//遍历队列
while (!queue.isEmpty()) {
//此处有坑,一定要先把每一层的数量记录下来,不然队列的长度发生变化,遍历次数不一样
int n=queue.size();
//层序遍历,从最上层到最下层,可以用BFS,把每一层的节点放到list里面。
//每一层都有一个list
List<Integer> list = new ArrayList<>();
for (int i=0;i<n;i++) {
//用poll拿出队列的节点
TreeNode node = queue.poll();
list.add(node.val);
//把当前节点的左子节点、右子节点,放入到队列中。
if (node.left!=null) {
queue.add(node.left);
}
if (node.right!=null) {
queue.add(node.right);
}
}
resultList.add(list);
}
return resultList;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2024-02-22 电商业务知识总结(三)--退货退款
2024-02-22 电商业务知识总结(二)--订单和支付
2024-02-22 电商业务知识总结(一)
2023-02-22 Git分支和迭代流程
2023-02-22 审批流程的设计
2021-02-22 ElastaticSearch--- es多字段聚合