匿名用户
1级
2012-06-04 回答
#include
#include
#define NULL 0
typedef struct node
{
int data;
node *left;
node *right;
}node;
node *CreateTree(node* root,int *p,int n)
{
int i=n;
node *q,*r;
while(i!=0)
{
if(root==NULL)
{
root=(node *)malloc(sizeof(node *));
q=root;
root->data=p[n-i];
i--;
root->left=NULL;
root->right=NULL;
}
else
{
while(root!=NULL)
{
if(p[n-i]>root->data)
{
if(root->right==NULL)
{
root->right=(node*)malloc(sizeof(node *));
root=root->right;
break;
}
root=root->right;
}
else if(p[n-i]data)
{
if(root->left==NULL)
{
root->left=(node*)malloc(sizeof(node *));
root=root->left;
break;
}
root=root->left;
}
}
root->data=p[n-i];
i--;
root->left=NULL;
root->right=NULL;
root=q;
}
}
return q;
}
void Print(node *root)
{
if(root!=NULL)
{
printf("%d ",root->data);
Print(root->left);
Print(root->right);
}
return;
}
bool search(node* root,int a)
{
node *p=root;
while(p!=NULL)
{
if(a==p->data)
return true;
else if(a>p->data)
p=p->right;
else if(adata)
p=p->left;
}
return false;
}
void main()
{
int n,p[20],i,a;
printf("type in the number of the node of the tree\n");
scanf("%d",&n);
printf("type in the number of the tree\n");
for(i=0;i
scanf("%d",&p[i]);
node *root=NULL;
root=CreateTree(root,p,n);
//Print(root);
printf("type in the number you search:\n");
scanf("%d",&a);
bool b=search(root,a);
if(b)
printf("Yes!\n");
else
printf("No!\n");
}