c语言帮忙调程序。。。。。。二叉排序树问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:27:57
#include"stdio.h"
#define OK 1
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
typedef struct Elemtype{/*数据类型*/
int key;/*关键字*/
int key_data;/*数据*/
}Elemtype;
typedef struct BiTNode{/*结点类型*/
Elemtype data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int n;/*二叉排序树中的元素总个数,(计数器)!!!!*/
int InsertBST(BiTree *T){/*向二叉排序树里存入数据*/
int key;
int key_data;
BiTree s,p;
printf("Please input key:");
scanf("%d",&key);
printf("Please input key_data:");
scanf("%d",&key_data);
if(!Insert_SearchBST(T,key,NULL,&p)){
printf("%d",key);
printf("%d",key_data);
s=(BiTree)malloc(sizeof(BiTNode));
s->data.key=key;
s->data.key_data=key_data;
s->lchild=s->rchild=NULL;
if(!p)*T=s;
else if(key<(*T)->data.key)p->lchild=s;
else p->rchil

你写的代码真是太乱了,你说能够编译,在我的机子上根本不能够编译,况且好多处都有问题,比如:你的CreatBiTree(BiTree *T)和 InsertBST(BiTree *T)的调用是一团糟。 Insert_SearchBST函数也没有声明,你可以去研究一下下面这个代码,是网上c++的想怕你没有学过,我把它改为c语言的了,很简洁的,可以帮助你对建立二叉树有个认识:
#include <stdio.h>
#include <malloc.h>
typedef int keyType;
typedef int elemType;
typedef struct Node
{
keyType key;
elemType otheItem;
struct Node *lchild,*rchild;
}*nodePtr;

nodePtr BSTSearch(nodePtr t,keyType key)
{
if (t == NULL)
{
return NULL;
}
else if(t->key == key)
{
return t;
}
else if (t->key < key)
{
return (BSTSearch(t->rchild,key));
}
else
{
return (BSTSearch(t->lchild,key));
}
}
nodePtr BSTInsert(nodePtr t,nodePtr s)
{
if (t == NULL)
{
t = s;

return (t);
}

else if (t->key > s->key)
{
t->lchild=BSTInse