思路
简单的层次遍历即可,使用队列进行层次扫描。但是在此过程中需要用到List 集合,但是函数要求的返回值为int[],因此在转换方式上我使用了两种方式,一种就是forEach 直接一个一个的转,另一种就是使用Arrays的mapToInt映射函数,具体的就是Arrays.stream(原来的list).mapToInt(这里填单个元素转换的class中的转换函数,我这里是Integer::valueOf).toArray();
代码
/**
* 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> q=new LinkedList<>();
//q.add(root);
TreeNode[] q = new TreeNode[2001];
int start = 0, end = 0;
q[++end] = root;
List<Integer> reList = new ArrayList<>();
while (start != end) {
TreeNode cursor = q[++start];
reList.add(cursor.val);
if (cursor.left != null) q[++end] = cursor.left;
if (cursor.right != null) q[++end] = cursor.right;
}
int[] re=new int[reList.size()];
for(int i=0;i<re.length;i++)
re[i]=reList.get(i);
return re;
// Integer[] re = new Integer[reList.size()];
// reList.toArray(re);
// return Arrays.stream(re).mapToInt(Integer::valueOf).toArray();
}
}