C语言数据结构(二叉排序树的创建及查找算法)
以下是我编的二叉排序树的创建及查找算法,可是好像有问题,请帮我看一下,麻烦了!!#include<stdio.h>#include"malloc.h"typedefstr...
以下是我编的二叉排序树的创建及查找算法,可是好像有问题,请帮我看一下,麻烦了!!
#include<stdio.h>
#include"malloc.h"
typedef struct BTNode
{
int key;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
//定义二叉排序树插入结点的算法
int BSTInsert(BTNode *T,int k)
{
if(T==NULL)
{
T=(BTNode *)malloc(sizeof(BTNode));
T->lchild=T->rchild=NULL;
T->key=k;
return 1;
}
else
{
if(k==T->key)
return 0;
else if(k<T->key)
return BSTInsert(T->lchild, k);
else
return BSTInsert(T->rchild, k);
}
}
//定义二叉排序树的创建算法
BTNode *createBST(int k[],int n)
{
BTNode *T;
T=NULL;
for(int i=0;i<=n-1;i++){
BSTInsert(T,k[i]);
}
return T;
}
//定义二叉排序树的查找算法
BTNode *BSTSearch(BTNode *T,int k)
{
if(T==NULL)
return NULL;
else
{
if(T->key==k)
return T;
else if(k<T->key)
{
return BSTSearch(T->lchild, k);
}
else
{
return BSTSearch(T->rchild, k);
}
}
}
void main()
{
int a[50]={5,3,2,4,1};
BTNode *T=createBST(a,5);
BTNode *t=BSTSearch(T,4);
printf("%p\n",t);//我的问题在这里,我想打印指向关键字4所在的指针地址,可是打印出的
//是空地址,测试其它关键字,打印出的也是空地址,不知道测序哪地方
//出错了,能帮我看一下吗麻烦了!!
} 展开
#include<stdio.h>
#include"malloc.h"
typedef struct BTNode
{
int key;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
//定义二叉排序树插入结点的算法
int BSTInsert(BTNode *T,int k)
{
if(T==NULL)
{
T=(BTNode *)malloc(sizeof(BTNode));
T->lchild=T->rchild=NULL;
T->key=k;
return 1;
}
else
{
if(k==T->key)
return 0;
else if(k<T->key)
return BSTInsert(T->lchild, k);
else
return BSTInsert(T->rchild, k);
}
}
//定义二叉排序树的创建算法
BTNode *createBST(int k[],int n)
{
BTNode *T;
T=NULL;
for(int i=0;i<=n-1;i++){
BSTInsert(T,k[i]);
}
return T;
}
//定义二叉排序树的查找算法
BTNode *BSTSearch(BTNode *T,int k)
{
if(T==NULL)
return NULL;
else
{
if(T->key==k)
return T;
else if(k<T->key)
{
return BSTSearch(T->lchild, k);
}
else
{
return BSTSearch(T->rchild, k);
}
}
}
void main()
{
int a[50]={5,3,2,4,1};
BTNode *T=createBST(a,5);
BTNode *t=BSTSearch(T,4);
printf("%p\n",t);//我的问题在这里,我想打印指向关键字4所在的指针地址,可是打印出的
//是空地址,测试其它关键字,打印出的也是空地址,不知道测序哪地方
//出错了,能帮我看一下吗麻烦了!!
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询