面试题32 - I. 从上到下打印二叉树(一般)

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:

给定二叉树: [3,9,20,null,null,15,7],

   3
  / \
  9  20
    /  \
   15   7
返回:

[3,9,20,15,7]

提示:

节点总数 <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof

思路:

二叉树的层次遍历

代码1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int[] levelOrder(TreeNode root) {
if(root == null)
return new int[0];
Queue<TreeNode> queue = new LinkedList<>();//新建一个队列
List<Integer> array = new ArrayList<>();//新建输出数组
queue.add(root);//将根节点放入队列
while(!queue.isEmpty()){//如果队列非空
TreeNode node = queue.poll();
array.add(node.val);//将队列输出添加到数组中
if(node.left !=null)
queue.add(node.left);
if(node.right != null)
queue.add(node.right);
}
//int[] res = new int[array.size()];
//for(int i=0;i<array.size();i++){
// res[i] = array.get(i);
//}
int[] res = list.stream().mapToInt(Integer::intValue).toArray();
return res;

}
}