题目
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
1
2
3
4
5
2
3
4
5
返回:
[3,9,20,15,7]
1
提示:
节点总数 <= 1000
题解
java
public int[] levelOrder(TreeNode root) {
if (root == null) {
return new int[0];
}
List<Integer> result = new ArrayList<>();
// 队列添加根节点
Queue<TreeNode> queue = new ArrayDeque<>(Collections.singletonList(root));
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
result.add(node.val);
// 由左至右 先添加左节点 在添加右节点
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
return result.stream().mapToInt(Integer::intValue).toArray();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24