二叉树的基本操作完整版,包含二叉树的所有操作,凡是你想要的都在(3)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




