swordpointtooffer(23): 从上往下打印二叉树 分析 实现

从上往下打印出二叉树的每个节点,同一层的节点按照从左往右的顺序打印。如下图中的二叉树,则依次打印出8、6、10、5、7、9、11。

分析

通过队列来保存遍历的节点。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static ArrayList<Integer> (TreeNode node){
if (node == null)
return null;
ArrayList<Integer> list = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(node);
TreeNode curNode;
while (!queue.isEmpty()){
curNode = queue.remove();
list.add(curNode.val);
if (curNode.left != null){
queue.add(curNode.left);
}
if (curNode.right != null){
queue.add(curNode.right);
}
}
return list;
}