教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

二叉树的基本操作完整版,包含二叉树的所有操作,凡是你想要的都在(3)

来源:网络收集 时间:2026-08-01
导读: BiTree p,p1,*q; if(!(q=(BiTree *)malloc(GetElemSum(T) * sizeof(BiTNode))))exit(ERROR); int num,head=1,tail=2,a=0,b=0; char ch=' ',str[20]; q[1]=T; printf(请输入要插入结点的位置序号: ); num=NumJudge(s

BiTree p,p1,*q; if(!(q=(BiTree *)malloc(GetElemSum(T) * sizeof(BiTNode))))exit(ERROR); int num,head=1,tail=2,a=0,b=0; char ch=' ',str[20]; q[1]=T; printf("请输入要插入结点的位置序号: "); num=NumJudge(str); if(num>sum){printf("\n您输入的位置序号大于有效结点个数\n\n");return ERROR;} while(head<tail){ p=q[head++]; if(num==tail-2)break;

if(p->lchild)q[tail++]=p->lchild;

if(p->rchild)q[tail++]=p->rchild;

}

printf("您输入的位置序号已有左子树和右子树,无法再此位置插入\n\n");return ERROR;}

if(q[num]->lchild&&!q[num]->rchild){

printf("位置%d的%c处只能生成右子树,确定插入/退出(y/n): ",num,q[num]->data);

while(1){ if(strcmp(str,"y")==0||strcmp(str,"n")==0)break; else{printf("选择错误,请重新输入: ");} } if(strcmp(str,"y")==0){ printf("请输入插入子树的信息: \n"); CreateBiTree(p1,a,b,ch); if(p1){q[num]->rchild=p1;} scanf("%s",str); } if(strcmp(str,"n")==0)return ERROR; } if(!q[num]->lchild&&q[num]->rchild){ printf("位置%d的%c处只能生成左子树,确定插入/退出(y/n): ",num,q[num]->data); while(1){ if(strcmp(str,"y")==0||strcmp(str,"n")==0)break; else{printf("选择错误,请重新输入: ");} } if(strcmp(str,"y")==0){ printf("请输入插入子树的信息: \n"); CreateBiTree(p1,a,b,ch); if(p1){q[num]->lchild=p1;} } if(strcmp(str,"n")==0)return ERROR; scanf("%s",str);

}

if(!q[num]->lchild&&!q[num]->rchild){

printf("请输入插入子树的信息: \n");

CreateBiTree(p1,a,b,ch);

printf("\t\t你想把新建的树作为位置%d的%c处的: \n",num,q[num]->data); printf("\t\t [1]左子树 [2]右子树\n");

printf("\n\t\t请输入你的选择: ");

while(1){

scanf("%s",str);

if(strcmp(str,"1")==0||strcmp(str,"2")==0)break; else{printf("选择错误,请重新输入: ");} } if(strcmp(str,"1")==0){ if(p1){q[num]->lchild=p1;}

}

if(strcmp(str,"2")==0){

if(p1){q[num]->rchild=p1;}

}

}

printf("插入子树成功\n");

return OK;

}//TreeInsert

Status Modify(BiTree T,int sum,int &n){

//修改二叉树第num个结点的值

BiTree p,*q; if(!(q=(BiTree *)malloc(GetElemSum(T) * sizeof(BiTNode))))exit(ERROR); int k,num,head=1,tail=2; char str[20]; q[1]=T;n=0; printf("请输入要修改结点的位置序号: "); num=NumJudge(str); if(num>sum){printf("\n您输入的位置序号大于有效结点个数\n\n");return ERROR;} while(head<tail){ p=q[head++];

if(num==tail-2)break;

if(p->lchild)q[tail++]=p->lchild;

if(p->rchild)q[tail++]=p->rchild;

}

printf("%5s请输入新的结点值: "," ");

while(1){ } q[num]->data=str[0]; printf("\n 修改成功\n"); n=1; return OK; fflush(stdin); for(k=0;k<20;k++){ str[k]=getchar(); if(str[k]=='\n')break; } if(k==0)printf("%5s请输入一个字符后再按Enter键: "," "); if(k==1)break; if(k>1)printf("%5s您只能输入一个字符: "," ");

}//Modify

int MainMenu(){ //主菜单函数

system("cls");

char str[20]; printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*"); printf("\n\t\t\t 计本102 卢荣盼 1018014052"); printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*"); printf("\n\t\t\t [1]建立空树\n"); printf("\n\t\t\t [2]构造二叉树\n"); printf("\n\t\t\t [3]显示树状二叉树\n"); printf("\n\t\t\t [4]遍历二叉树 ->>进入子菜单\n"); printf("\n\t\t\t [5]查看二叉树信息 ->>进入子菜单\n"); printf("\n\t\t\t [6]对二叉树进行操作 ->>进入子菜单\n"); printf("\n\t\t\t [0]退出程序"); printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*"); printf("\n\t\t\t请输入你的选择: "); while(1){ scanf("%s",str); if(strcmp(str,"0")==0||strcmp(str,"1")==0||strcmp(str,"2")==0||strcmp(str,"3")==0 ||strcmp(str,"4")==0||strcmp(str,"5")==0||strcmp(str,"6")==0){ choose=atoi(str);break;} else{printf("\t\t\t选择错误请重新输入: ");} } if(choose==0){printf("\n\n\t…~~~…~~~谢谢使用本程序~~~…~~~…\n\n");}

return choose;

}//MainMenu()

int Menu(){ //主菜单函数

system("cls"); int choose; char str[20]; printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*"); printf("\n\t\t\t 请选择对应的选项按对应的方式遍历二叉树"); printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*"); printf("\n\t\t\t\t[1]按先序(递归)遍历二叉树\n"); printf("\n\t\t\t\t[2]按中序(递归)遍历二叉树\n"); printf("\n\t\t\t\t[3]按后序(递归)遍历二叉树\n"); printf("\n\t\t\t\t[4]按先序(非递归)遍历二叉树\n"); printf("\n\t\t\t\t[5]按中序(非递归)遍历二叉树\n"); printf("\n\t\t\t\t[6]按后序(非递归)遍历二叉树\n"); printf("\n\t\t\t\t[7]按层次(非递归)遍历二叉树\n"); printf("\n\t\t\t\t[0]返回主菜单"); printf("\n\t\t\t*=*=*=*=*=*=*=**=*=*=**=*=*=**=*=*=**=*=*=*\n"); printf("\t\t\t请输入你的选择: "); while(1){ scanf("%s",str);

||strcmp(str,"4")==0||strcmp(str,"5")==0||strcmp(str,"6")==0||strcmp(str,"7")==0) { choose=atoi(str);break;} else{printf("\t\t\t选择错误请重新输入: ");} } return choose;

}//Menu()

int Menu1(){ //查看二叉树信息菜单

system("cls"); int choose; char str[20],str1[20]; printf("\n\ …… 此处隐藏:3589字,全部文档内容请下载后查看。喜欢就下载吧 ……

二叉树的基本操作完整版,包含二叉树的所有操作,凡是你想要的都在(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/115621.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)