c语言写的二叉排序树编译没报错,但是运行的时候出错,求大神指教
#include<stdio.h>#include<stdlib.h>structBiNode{intdata;structBiNode*lchild;structBiN...
#include <stdio.h>
#include <stdlib.h>
struct BiNode
{
int data;
struct BiNode *lchild;
struct BiNode *rchild;
};
int main()
{
int n;
struct BiNode *r;
void Creat(int *a);
struct BiNode *Search(struct BiNode *r,int k);
void Insert(struct BiNode *r,struct BiNode *k);
int k;
int a[9]={55,30,15,35,5,10,65,60,80};
Creat(a);
printf("please enter a number to search.\n");
scanf("%d",&k);
Search(r,k);
return 0;
}
void Creat(int a[])
{
void Insert(struct BiNode *r,struct BiNode *k);
int n,i;
struct BiNode *r;
for( i=0;i<n;i++)
{
struct BiNode *p;
p->data=a[i];
p->lchild=NULL;
p->rchild=NULL;
Insert(r,p);
}
}
void Insert(struct BiNode *r,struct BiNode *k)
{
if(r==NULL)
r=k;
else if(k->data<r->data)
Insert(r->lchild,k);
else Insert(r->rchild,k);
}
struct BiNode *Search(struct BiNode *r,int k)
{
if(r==NULL)
return NULL;
else if(r->data==k)
return r;
else if(r->data<k)
Search(r->lchild,k);
else
Search(r->rchild,k);
}; 展开
#include <stdlib.h>
struct BiNode
{
int data;
struct BiNode *lchild;
struct BiNode *rchild;
};
int main()
{
int n;
struct BiNode *r;
void Creat(int *a);
struct BiNode *Search(struct BiNode *r,int k);
void Insert(struct BiNode *r,struct BiNode *k);
int k;
int a[9]={55,30,15,35,5,10,65,60,80};
Creat(a);
printf("please enter a number to search.\n");
scanf("%d",&k);
Search(r,k);
return 0;
}
void Creat(int a[])
{
void Insert(struct BiNode *r,struct BiNode *k);
int n,i;
struct BiNode *r;
for( i=0;i<n;i++)
{
struct BiNode *p;
p->data=a[i];
p->lchild=NULL;
p->rchild=NULL;
Insert(r,p);
}
}
void Insert(struct BiNode *r,struct BiNode *k)
{
if(r==NULL)
r=k;
else if(k->data<r->data)
Insert(r->lchild,k);
else Insert(r->rchild,k);
}
struct BiNode *Search(struct BiNode *r,int k)
{
if(r==NULL)
return NULL;
else if(r->data==k)
return r;
else if(r->data<k)
Search(r->lchild,k);
else
Search(r->rchild,k);
}; 展开
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <malloc.h>
struct BiNode
{
int data;
struct BiNode *lchild;
struct BiNode *rchild;
};
BiNode * createbt(int a[],int i,int n) ;
void showBiNode(BiNode *p);
struct BiNode *Search(struct BiNode *r,int k);
int main()
{
int k;
int a[9]={55,30,15,35,5,10,65,60,80};
struct BiNode *r;
r=createbt(a,0,9);
showBiNode(r);
printf("please enter a number to search.\n");
scanf("%d",&k);
BiNode *p=Search(r,k);
if (p!=NULL)
{
std::cout<<"查找成功"<<std::endl;
}
return 0;
}
BiNode * createbt(int a[],int i,int n)
{
BiNode * p;
if(i>=n) return NULL;
{
p=(BiNode *)malloc(sizeof(BiNode));//判断节点是不是虚节点,如果是的话就分配一个地址
p->data =a[i]; //用于存放数据的一个数组
p->lchild =createbt(a,2*i+1,n); //你先把这个二叉树补充成带有NULL的完全二叉树,I表示从根往下数第几个节点
if(i>=n) return NULL;
p->rchild =createbt(a,2*i+2,n);
return p;
}
}
struct BiNode *Search(struct BiNode *r,int k)
{
if (r!=NULL)
{ if(r->data==k)return r;
Search(r->lchild,k);
Search(r->rchild,k);
}
}
void showBiNode(BiNode *p)
{
if (p!=NULL)
{
printf("%d \n",p->data);
showBiNode(p->lchild);
showBiNode(p->rchild);
}
}
#include <stdlib.h>
#include <iostream>
#include <malloc.h>
struct BiNode
{
int data;
struct BiNode *lchild;
struct BiNode *rchild;
};
BiNode * createbt(int a[],int i,int n) ;
void showBiNode(BiNode *p);
struct BiNode *Search(struct BiNode *r,int k);
int main()
{
int k;
int a[9]={55,30,15,35,5,10,65,60,80};
struct BiNode *r;
r=createbt(a,0,9);
showBiNode(r);
printf("please enter a number to search.\n");
scanf("%d",&k);
BiNode *p=Search(r,k);
if (p!=NULL)
{
std::cout<<"查找成功"<<std::endl;
}
return 0;
}
BiNode * createbt(int a[],int i,int n)
{
BiNode * p;
if(i>=n) return NULL;
{
p=(BiNode *)malloc(sizeof(BiNode));//判断节点是不是虚节点,如果是的话就分配一个地址
p->data =a[i]; //用于存放数据的一个数组
p->lchild =createbt(a,2*i+1,n); //你先把这个二叉树补充成带有NULL的完全二叉树,I表示从根往下数第几个节点
if(i>=n) return NULL;
p->rchild =createbt(a,2*i+2,n);
return p;
}
}
struct BiNode *Search(struct BiNode *r,int k)
{
if (r!=NULL)
{ if(r->data==k)return r;
Search(r->lchild,k);
Search(r->rchild,k);
}
}
void showBiNode(BiNode *p)
{
if (p!=NULL)
{
printf("%d \n",p->data);
showBiNode(p->lchild);
showBiNode(p->rchild);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询