说让构造一个二叉树,并在二叉树中查找值为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返回值有问题。。
可我还是没改好。。
哪位高人指点一下。。最好详细点。。
在这里我先谢过了。。