#include<iostream>
#include<vector>
#include<stdlib.h>
using namespace std;
typedef struct Bitnode{
int data;
Bitnode *lchild,*rchild;
}Bitnode;
void insertBST(Bitnode *&t,int key)//二叉排序树
{
if(t==NULL){
t=new Bitnode;
t->data=key;
t->lchild=t->rchild=NULL;
return;
}
if (key<t->data) insertBST(t->lchild,key);
else insertBST(t->rchild,key);
}
void create(Bitnode *&t,int a[],int n)
{
t=NULL;
for(int i=0;i<n;i++)
insertBST(t,a[i]);
}
void inorder(Bitnode *t)//中序遍历
{
if(t){
inorder(t->lchild);
cout<<t->data<<' ';
inorder(t->rchild);
}
}
int searchsx(int a[],int x,int n)/*顺序查找*/
{
a[0]=x;
for(;x!=a[n];n--);
cout<<a[n]<<endl;
return n;
}
int searchbin(int a[],int x,int n)/*二分查找*/
{
int low,high,mid;
low=1;high=n;
while(low<=high)
{
mid=(low+high)/2;
if(x==a[mid]) return mid;
else if(x<a[mid]) high=mid-1;
else low=mid+1;
}
return 0;
}
void main()
{
int key;
int numbers[]={10,20,30,40,50,60,8,70,80,90,100};
int n=sizeof(numbers)/sizeof(int);
cout<<searchsx(numbers,40,n)<<endl;
cout<<searchbin(numbers,90,n)<<endl;
cout<<numbers[searchbin(numbers,90,n)]<<endl;
/*cout<<'n='<<n<<endl;*/
Bitnode *t;
create(t,numbers,n);
cin>>key;
insertBST(t,key);
inorder(t);
}
#include<vector>
#include<stdlib.h>
using namespace std;
typedef struct Bitnode{
int data;
Bitnode *lchild,*rchild;
}Bitnode;
void insertBST(Bitnode *&t,int key)//二叉排序树
{
if(t==NULL){
t=new Bitnode;
t->data=key;
t->lchild=t->rchild=NULL;
return;
}
if (key<t->data) insertBST(t->lchild,key);
else insertBST(t->rchild,key);
}
void create(Bitnode *&t,int a[],int n)
{
t=NULL;
for(int i=0;i<n;i++)
insertBST(t,a[i]);
}
void inorder(Bitnode *t)//中序遍历
{
if(t){
inorder(t->lchild);
cout<<t->data<<' ';
inorder(t->rchild);
}
}
int searchsx(int a[],int x,int n)/*顺序查找*/
{
a[0]=x;
for(;x!=a[n];n--);
cout<<a[n]<<endl;
return n;
}
int searchbin(int a[],int x,int n)/*二分查找*/
{
int low,high,mid;
low=1;high=n;
while(low<=high)
{
mid=(low+high)/2;
if(x==a[mid]) return mid;
else if(x<a[mid]) high=mid-1;
else low=mid+1;
}
return 0;
}
void main()
{
int key;
int numbers[]={10,20,30,40,50,60,8,70,80,90,100};
int n=sizeof(numbers)/sizeof(int);
cout<<searchsx(numbers,40,n)<<endl;
cout<<searchbin(numbers,90,n)<<endl;
cout<<numbers[searchbin(numbers,90,n)]<<endl;
/*cout<<'n='<<n<<endl;*/
Bitnode *t;
create(t,numbers,n);
cin>>key;
insertBST(t,key);
inorder(t);
}