运行不出二叉排序树的中序遍历结果,((仅供参考)在InsertBST函数和display函数中似乎都有问题)

intInsertBST(bitreeroot,KeyTypedata)//在二叉排序树中进行插入{bitrees;if(root==NULL){s=newbitnode... int InsertBST(bitree root,KeyType data)//在二叉排序树中进行插入
{
bitree s;
if(root==NULL)
{
s=new bitnode;
//root=(bitnode *)malloc(sizeof(bitnode));//给s分配内存空间
s->key=data;//给定关键字与根节点关键字相等
// s->lchild=s->rchild=root;//则左、右子树都为空
root=s;
s->lchild=s->rchild=root;//则左、右子树都为空
return TRUE;
}
if(data==root->key)
return FALSE;
if(data<root->key)
return(InsertBST(root->lchild,data));
else
return(InsertBST(root->rchild,data));
}

//########二叉排序树的创建##############
bitree CreateBST(bitree T)//二叉排序树的建立
{
int i;

int a[100],cnt,data;
//T=(bitnode *)malloc(sizeof(bitnode));
//T=NULL;//置空树

printf("请输入数据个数:");//设置输入数据个数
scanf("%d",&cnt);
/* for(int i=0;i<cnt;i++)//依次插入各数据
{
printf("请输入数据:");
scanf("%d",&a[i]) ;
}*/

for(i=0;i<cnt;i++)//依次插入各数据
{
printf("请输入数据:");
scanf("%d",&data) ;
InsertBST(T,data);
}
return(T) ;
}

int main()
{
int data,menu;
bitree root=NULL;
do
{//建立循环,选择不同的操作
table();
printf("请输入相应操作:");
scanf("%d",&menu);
switch(menu)
{
case 1://选择操作1,即二叉排序树的创建
printf("创建二叉树:\n");
CreateBST(root);
// InsertBST(root,date);
display(root);
printf("\n");
break;
程序不完整,不好意思
void display(bitree root)
{
if(root!=NULL){
display(root->lchild);
printf("%5d",root->key);
display(root->rchild);
}
}
希望可以将程序代码进行完整的更改。
谢谢
展开
 我来答
北可可5297
2016-12-26 · TA获得超过423个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:47.1万
展开全部
p*find(p*r,intv){if(v==p->data)returnp;if(vdata)returnfind(p->lchild,v);elsereturnfind(p->rchild,v);}//大概思路就是这样当前节点是要查找的值直接返回小于查找左子树大于查找右子数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>java版:nodesearch(nodep,datakey)//data是你的键值类型{if(p==null||p.key==key)returnp;if(p.key
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式