急求,VC++的问题,求高手帮忙啊!!

我现有这个子函数,我需要一个主函数来调用这些子函数,以实现二叉树的查找!!求大侠们帮我完成这个题目!!
可以运行即可!!
子函数如下:
/* 二叉排序树的结点定义 */
typedef struct node
{
int key;
struct node *lchild, *rchild;
} NODE;

/* 创建二叉排序树 */
NODE *CreateBST(NODE *pr, int keys[], int n)
{
NODE *p=NULL, *q=NULL, *s=NULL;
int i;

for (i=0; i<n; i++)
{
/* 确定新的key值应当插入的位置 */
q=pr;
while( q!=NULL )
{
if (keys[i]<q->key)
p=q, q=q->lchild;
else
p=q, q=q->rchild;
}

/* 插入新的结点 */
s=(NODE *)malloc(sizeof(NODE));
s->key=keys[i];
s->lchild=NULL, s->rchild=NULL;

if (p==NULL) /* 根结点 */
pr=s;
else if (s->key<p->key)
p->lchild=s;
else
p->rchild=s;
}
return pr;
}

/* 在二叉排序树中查找某个key值 */
int SearchBST(NODE *pr, int key)
{
NODE *p=NULL;

p=pr;
while(p!=NULL)
{
if (key==p->key) /* 找到 */
return 1;
else if (key<p->key)
p=p->lchild;
else
p=p->rchild;
}

return 0;
}

第1个回答  2011-11-02
#include <iostream.h>
#include <stdlib.h>
#define MAX 100

/* 二叉排序树的结点定义 */
typedef struct node
{
int key;
struct node *lchild, *rchild;
} NODE;

/* 创建二叉排序树 */
NODE *CreateBST(NODE *pr, int keys[], int n)
{
NODE *p=NULL, *q=NULL, *s=NULL;
int i;

for (i=0; i<n; i++)
{
/* 确定新的key值应当插入的位置 */
q=pr;
while( q!=NULL )
{
if (keys[i]<q->key)
p=q, q=q->lchild;
else
p=q, q=q->rchild;
}

/* 插入新的结点 */
s=(NODE *)malloc(sizeof(NODE));
s->key=keys[i];
s->lchild=NULL, s->rchild=NULL;

if (p==NULL) /* 根结点 */
pr=s;
else if (s->key<p->key)
p->lchild=s;
else
p->rchild=s;
}
return pr;
}

/* 在二叉排序树中查找某个key值 */
int SearchBST(NODE *pr, int key)
{
NODE *p=NULL;

p=pr;
while(p!=NULL)
{
if (key==p->key) /* 找到 *///(NODE*)malloc(MAX*sizeof(NODE))
return 1;
else if (key<p->key)
p=p->lchild;
else
p=p->rchild;
}

return 0;
}

void main()

{
int i,n,keys[MAX+1];
NODE *tree = NULL;
cout<<"请输入结点总数n:(n值范围不超过100)\n";
cin >>n;
if(n>MAX)
{
cout<<"输入超出范围请重新输入";
system("cls");
cin>>n;
}
for(i = 0 ;i <n;i++)
{
cin>>keys[i];
}
tree = CreateBST(tree,keys,n);

int key;
cout<<"请输入要查找的结点元素:";
cin >>key;
if(SearchBST(tree,key))
{
cout<<"找到key值"<<key;
}
}
相似回答