剑指 Offer 32-I. 从上到下打印二叉树
题目
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如: 给定二叉树:[3,9,20,null,null,15,7]
graph TB
3((3)) --- 9((9))
3 --- 20((20))
20 --- 15((15))
20 --- 7((7))
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
题解
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();
}