题目

https://leetcode.cn/problems/binary-tree-level-order-traversal/description/
思路
-
边界处理:根节点为空则直接返回空列表
-
队列初始化:创建队列,将根节点入队
-
逐层遍历:循环处理直到队列为空
- 记录当前队列长度(即当前层节点数)
- 创建当前层的值列表
- 循环取出当前层所有节点:
- 节点值加入当前层列表
- 左右子节点(不为空)加入队列供下一层使用
- 将当前层列表加入结果集
-
返回结果
核心:利用队列的先进先出特性,通过记录每层节点数量来控制分层输出。
code
java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new LinkedList();
Deque<TreeNode> deque = new LinkedList();
if(root == null) return result;
deque.offer(root);
//队不为空
while(deque.isEmpty()==false){
List<Integer> list = new ArrayList<>();
int nodeNum = deque.size();
while(nodeNum>0){
TreeNode node=deque.poll();
nodeNum--;
list.add(node.val);
if(node.left !=null){
deque.offer(node.left);
}
if(node.right!=null){
deque.offer(node.right);
}
}
result.add(list);
}
return result;
}
}