输入:一个有序数组和数组大小
输出:一个有序二叉树(二叉查找树又叫二叉排序树)它只是说是有序二叉树没有说是平衡的,当且当做是平衡的吧!
#ifndef TREE_H #define TREE_H #include<cstdio> #include<iostream> #include<vector> using namespace std; struct Tree { Tree* Lchild; Tree* Rchild; int value; }; #endif #include"Tree.h" Tree *AddNode(vector<int> a,int min,int max) { Tree *root; int mid; if(min>max)return NULL; else { mid=(min+max)/2; root=new Tree(); root->value=a[mid]; root->Lchild=AddNode(a,min,mid-1); root->Rchild =AddNode(a,mid+1,max); return root; } } void printfTree(Tree *node) { if(node!=NULL) { cout<<node->value<<endl; cout<<"-lchild "<<endl; printfTree(node->Lchild); cout<<"-rchild "<<endl; printfTree(node->Rchild); } } int main() { vector<int >a; Tree *root; int n; int element; cout<<":"; cin>>n; for(int i=0;i<n;i++) { cin>>element; a.push_back(element); } root=AddNode(a,0,n-1); printfTree(root); cin>>n; }