给定一个递增有序的数组,用该数组创建平衡二叉树。
思想:利用折半查找的判定树是一棵平衡二叉树来创建。利用递归分别创建左子树和右子树。
代码:
BiTree Binary_CreateAVL(int *nums,int a,int b){
//非法输入
if(a>b) return NULL;
int mid=(a+b)/2;
BiTree r=(BiTNode*)malloc(sizeof(BiTreeNode));
r->data=nums[mid];
//递归创建左右子树
r->lchild=Binary_CreateAVL(nums,a,mid-1);
r->rchild=Binary_CreateAVL(nums,mid,b);
return r;
}
//数组小标从0开始
BiTree CreateAVL(int *nums,int len){
return Binary_CreateAVL(nums,0,len-1);
}