【题目】
给定一个有序数字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;}}
}