Sword32-I——从上到下打印二叉树
方法1——BFS
- 思路:最简单的层次遍历,其实就是BFS。BFS一般涉及到辅助队列的使用
- 特殊情况与临界分析:根节点为空时,无法入队,直接返回
- 终止条件:队列中无元素,即为空
- 步骤:
- 根节点为空,直接返回空
- 定义辅助队列
- 定义一个移动节点
- 向队列中加入非空的根节点(即移动节点)
- 定义一个ArrayList,用于存储结果
- 循环条件:队列非空
- while循环
- 队列中弹出一个节点
- 将节点值加入ArrayList
- 判断该节点左子节点是否非空,非空则入队
- 判断该节点右子节点是否非空,非空则入队
- 将ArrayList转换为数组
- 返回结果
public int[] levelOrder(TreeNode root) {
if (root == null) {
return new int[0];
}
Queue<TreeNode> queue = new LinkedList<>();
TreeNode cur = root;
queue.offer(root);
List<Integer> res = new ArrayList<>();
while (!queue.isEmpty()) {
cur = queue.poll();
res.add(cur.val);
if (cur.left != null) {
queue.offer(cur.left);
}
if (cur.right != null) {
queue.offer(cur.right);
}
}
int[] array = new int[res.size()];
for (int i = 0; i < res.size(); i++) {
array[i] = res.get(i);
}
return array;
}
![方法1——BFS](https://i-blog.csdnimg.cn/blog_migrate/a5f682dcd6c9a4967167032df06c763f.png)