6.2.c

来自「自己写的数据结构课程程序」· C语言 代码 · 共 68 行

C
68
字号
#include<stdio.h>
#define NULL 0
struct BiTNode
{int data;
 struct BiTNode *lchild;
 struct BiTNode *rchild;
};
struct BiTNode *T;
struct BiTNode *p;
int SearchBST(struct BiTNode *T,int e,struct BiTNode *f)
{if(!T)
   {p=f;
    return 0;
   }
 else
   if(e==T->data)
     {p=T;
      return 1;
     }
   else
     if(e<T->data)
       return SearchBST(T->lchild,e,T);
     else
       return SearchBST(T->rchild,e,T);
}
int InsertBST(int e)
{struct BiTNode *s;
 if(!SearchBST(T,e,NULL))
  {s=(struct BiTNode *)malloc(sizeof(struct BiTNode));
   s->data=e;
   s->lchild=s->rchild=NULL;
   if(!p)
     T=s;
   else
     if(e<p->data)
       p->lchild=s;
     else
       p->rchild=s;
   return 1;
  }
 else
   return 0;
}
void CreatBST()
{int e;
 T=p=NULL;
 printf("input data! when input 32767 to break.\n");
 while(e!=32767)
   {scanf("%d",&e);
    InsertBST(e);
   }
}
void main(void)
{int e;
 CreatBST();
 printf("input data to search.\n");
 scanf("%d",&e);
 if(SearchBST(T,e,NULL))
   printf("true!\n%d\n",p->data);
 else
   {printf("false!\n");
    if(InsertBST(e))
      printf("insert success!\n");
   }
 getchar();
 getchar();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?