【题目】
给定一个有序数字sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡二叉树,并且该平衡二叉树中序遍历的结果与sortArr一致
【分析】
用有序数组最中间的树生成二叉树的头节点,然后用这个树左边的树生成左子树,用右边的树生成右子树即可
【代码】
package zyc.binaryTree;
public class P152_SortedArrToCbt {
public static Node arrToCbt(int[] arr, int start, int end) {
if (start > end) {
return null;
}
Double index = Math.ceil(((double) start + (double) end) / 2);
int mid = index.intValue();
Node node = new Node(arr[mid]);
node.left = arrToCbt(arr, start, mid - 1);
node.right = arrToCbt(arr, mid + 1, end);
return node;
}
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
Node node = arrToCbt(arr, 0, arr.length - 1);
System.out.println(node);
}
public static class Node {
public int value;
public Node left;
public Node right;
public Node(int value) {
this.value = value;
}
}
}