//将有序数组转化为二叉搜索树
//二叉搜索树:每一个节点的值大于左孩子的值,小于右孩子的值,如果采用中序遍历,输出结果为从小到大的
public BinaryTree arrayToBST(T array[],int start,int end)
{
if(start>end)
{
return null;
}
//将数组的中间值赋给节点,递归调用完成左子树和右子树的创建
int mid = start+(end-start)/2;
root = new BinaryTree<T>(array[mid],arrayToBST(array,start,mid-1),arrayToBST(array,mid+1,end));
return root;
}
二叉树的结构定义如下:
/**
* Created by novax_000 on 2016/5/1.
*/
public class BinaryTree<T> {
public T value;
public BinaryTree<T> left;
public BinaryTree<T> right;
public BinaryTree(T value, BinaryTree<T> left, BinaryTree<T> right) {
super();
this.value = value;
this.left = left;
this.right = right;
}
public BinaryTree() {
super();
}
}