1、思路
根节点存储数组的第i个值,则其左右节点分别存储数组的第2i+1和第2i+2个值
2、代码
import java.util.*;
class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(int x){
val = x;
}
}
public class PrintTree{
public static TreeNode createTree(int[] arr, int i){
if(i >= arr.length){
return null;
}
TreeNode root = new TreeNode(arr[i]);
root.left = createTree(arr, 2 * i + 1);
root.right = createTree(arr, 2 * i + 2);
return root;
}
public static int[] levelOrder(TreeNode root) {
if(root == null)
return new int[0];
ArrayList res = new ArrayList<>();
LinkedList queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
int len = queue.size();
for(int i = 0; i < len; i++){
TreeNode node = queue.remove();
res.add(node.val);
if(node.left != null){
queue.add(node.left);
}
if(node.right != null){
queue.add(node.right);
}
}
}
int[] result = new int[res.size()];
for(int i = 0; i < res.size(); i++){
result[i] = res.get(i);
}
return result;
}
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
int len = arr.length;
TreeNode root = createTree(arr, 0);
//System.out.println("creating...");
int[] result = levelOrder(root);
System.out.println(Arrays.toString(result));
}
}