1. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回:[3,9,20,15,7]
思路:
- 从上到下遍历:
- 首先联想到了递归,但是发现真正操作时候,无法将同一层保持在同一段时间上进行输出
- 因此这里联想到BFS(广度优先搜索),运用队列的特殊性质(先进先出),每输出一个节点的值,就将其左右节点放入队列之中,这样整体保证了每一层从左到右处理完后,再进入下一层。
class Solution {
public int[] levelOrder(TreeNode root) {
List<Integer> list = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
if(root!=null){
queue.add(root);
}
while(!queue.isEmpty()){
TreeNode cur = queue.poll();
list.add(cur.val);
if(cur.left!=null) queue.add(cur.left);
if(cur.right!=null) queue.add(cur.right);
}
int[] res = new int[list.size()];
int count = 0;
for(int n : list){
res[count++] = n;
}
return res;
}
}
