1.题目描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
2.解题思路与代码
2.1 解题思路
题目要求一层一层的打印节点,并且每一层都是按照从左到右的顺序进行打印,因此使用层序遍历来完成题目要求。使用队列存放节点,每次循环弹出队头节点,并放入临时存放列表中,如果节点的左子树不为空,让左子树入队;如果节点的右子树不为空,让右子树入队,直到队列为空。最后将列表转换成数组即可。
2.2 代码
class Solution {
public int[] levelOrder(TreeNode root) {
if (root == null) {
return new int[0];
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
List<Integer> tmp = new ArrayList<>();
while (!queue.isEmpty()) {
TreeNode poll = queue.poll();
tmp.add(poll.val);
if (poll.left!=null){
queue.offer(poll.left);
}
if (poll.right!=null){
queue.offer(poll.right);
}
}
int[] ans = new int[tmp.size()];
int index = 0;
for (Integer ele : tmp) {
ans[index++] = ele;
}
return ans;
}
}
2.3 测试结果
通过测试
3.总结
- 二叉树层序遍历