C程序 二叉排序树的创建和查找 问题

#include<stdlib.h>
#include<iostream.h>
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode;
typedef BiTNode *BiTree;
void insert(BiTree T,int k){
if(T==NULL){
T=(BiTree)malloc(sizeof(BiTNode));
T->data=k;
T->lchild=T->rchild=NULL;
}
else if(k<T->data)
insert (T->lchild,k);
else if(k>T->data)
insert (T->rchild,k);
}
void createBST(BiTree T,int n){
T=NULL;
int k;
for(int i=1;i<=n;++i){
cin>>k;
insert(T,k);
}
}

BiTree Find(BiTree T,int k){
if(T==NULL)
return NULL;
else if(T->data==k)
return T;
else if(k<T->data)
return Find(T->lchild,k);
else
return Find(T->rchild,k);
}
void main(){
BiTree p;
BiTree T;

createBST(T,10);
p=Find(T,5);
cout<<p->data<<endl;
}

程序本身没有语法问题 但不能实现其功能 求修改

第1个回答  2012-06-10
/* 初始化二叉树,即把树根指针置空 */
void InitBiTree(BiTree &T){
T=NULL;
}

/* 按先序次序建立一个二叉树*/
Status PreCreatBiTree(BiTree &T){
ElemType ch;
cin>>ch;
if (ch=='#') T = NULL;
else {
if (!(T = (BitNode *)malloc(sizeof(BitNode))))
return ERROR;
T->data = ch; // 生成根结点
PreCreatBiTree(T->lchild); // 构造左子树
PreCreatBiTree(T->rchild); // 构造右子树
}
return OK;
}
/* 按中序次序建立一个二叉树*/
Status InCreatBiTree(BiTree &T){
ElemType ch;
cin>>ch;
if (ch=='#') T = NULL;
else {
if (!(T = (BitNode *)malloc(sizeof(BitNode))))
return ERROR;
InCreatBiTree(T->lchild); // 构造左子树
T->data = ch;
InCreatBiTree(T->rchild); // 构造右子树
}
return OK;
}