主题:[讨论]明天就交程序了。。哪位高人帮忙指点一下。。二叉树的问题。。
说让构造一个二叉树,并在二叉树中查找值为x的节点并输出x的所有祖先。。。
我已经有一个程序了。。。
就是只能输出一个根祖先。。。
哪位高手帮忙指点一下。。到底哪有问题。。
#include "malloc.h"
#include"stdio.h"
typedef struct node
{ int data;
struct node *left,*right;
}ErXTree;
void insert(ErXTree **t,ErXTree *s)
{ if(*t==NULL) *t=s;
else if(s->data==(*t)->data) return;
else if(s->data<(*t)->data) insert(&(*t)->left,s);
else if(s->data>(*t)->data) insert(&(*t)->right,s);
}
void creat(ErXTree **t1)
{ int x;
ErXTree *s;
printf("please input number:\n");
scanf("%d",&x);
while(x!=0)
{ s=(ErXTree*)malloc(sizeof(ErXTree));
s->data=x;
s->left=NULL;
s->right=NULL;
insert(t1,s);
s=NULL;
printf("please input number(0 is end):\n");
fflush(stdin);
scanf("%d",&x);
}
}
int search(ErXTree *b,int x)
{
if(b==NULL) return NULL;
else
{
if(b->data==x)
{
return b->data;
}
else
{
if(x<b->data)
{
printf("zu xian shi:%d",b->data);
return search(b->left,x);
}
else
{
printf("%d",b->data);
return search(b->right,x);
}
}
}
}
main()
{
ErXTree *t=NULL;
int x;
creat(&t);
printf("input:\n");
scanf("%d",&x);
search(t,x);
getch();
getch();
}
总感觉是search函数有问题。。。。
刚才有位高手说int返回值有问题。。
可我还是没改好。。
哪位高人指点一下。。最好详细点。。
在这里我先谢过了。。
我已经有一个程序了。。。
就是只能输出一个根祖先。。。
哪位高手帮忙指点一下。。到底哪有问题。。
#include "malloc.h"
#include"stdio.h"
typedef struct node
{ int data;
struct node *left,*right;
}ErXTree;
void insert(ErXTree **t,ErXTree *s)
{ if(*t==NULL) *t=s;
else if(s->data==(*t)->data) return;
else if(s->data<(*t)->data) insert(&(*t)->left,s);
else if(s->data>(*t)->data) insert(&(*t)->right,s);
}
void creat(ErXTree **t1)
{ int x;
ErXTree *s;
printf("please input number:\n");
scanf("%d",&x);
while(x!=0)
{ s=(ErXTree*)malloc(sizeof(ErXTree));
s->data=x;
s->left=NULL;
s->right=NULL;
insert(t1,s);
s=NULL;
printf("please input number(0 is end):\n");
fflush(stdin);
scanf("%d",&x);
}
}
int search(ErXTree *b,int x)
{
if(b==NULL) return NULL;
else
{
if(b->data==x)
{
return b->data;
}
else
{
if(x<b->data)
{
printf("zu xian shi:%d",b->data);
return search(b->left,x);
}
else
{
printf("%d",b->data);
return search(b->right,x);
}
}
}
}
main()
{
ErXTree *t=NULL;
int x;
creat(&t);
printf("input:\n");
scanf("%d",&x);
search(t,x);
getch();
getch();
}
总感觉是search函数有问题。。。。
刚才有位高手说int返回值有问题。。
可我还是没改好。。
哪位高人指点一下。。最好详细点。。
在这里我先谢过了。。