结点结构定义如下:
template<class T>
struct tNode
{ T data;
tNode *left, *right;
};
首先要先把输入的数据排好序,然后每次都取最中间的数字构造插入,运用递归,左边的就插入左子树,右边的就插入右子树
template<class T>
void createtree(tNode<T>* &r,T num[],int l,int r1)
{
if(l>r1)return;
int t=(r1+l)/2;
r=new tNode<T>;
r->data=num[t];
r->left=r->right=NULL;
createtree(r->left,num,l,t-1);
createtree(r->right,num,t+1,r1);
}
tNode<int>* root;
int num[1000];
int main()
{
int n;//数据个数
cin>>n;
for(int i=0;i<n;i++)
{
cin>>num[i];
}
sort(num,num+n);
createtree(root,num,0,n-1);
return 0;
}