首页 数据结构课程设计二叉树相关操作源代码

数据结构课程设计二叉树相关操作源代码

举报
开通vip

数据结构课程设计二叉树相关操作源代码可运行c语言数据结构课程设计二叉树相关操作源代码 #include #include #define MAXSIZE 1000 structBiTNode{ int c; intlchild,rchild; }BiTNode,*BiTree; structBiTNode tree[MAXSIZE]; void creat()//创建二叉树函数 { inti,j; printf("需要输入权值个数:\n"); scanf("%d",&j); if (j<8) //判断二叉树是否达到4层...

数据结构课程设计二叉树相关操作源代码
可运行c语言数据结构课程设计二叉树相关操作源代码 #include #include #define MAXSIZE 1000 structBiTNode{ int c; intlchild,rchild; }BiTNode,*BiTree; structBiTNode tree[MAXSIZE]; void creat()//创建二叉树函数 { inti,j; printf("需要输入权值个数:\n"); scanf("%d",&j); if (j<8) //判断二叉树是否达到4层 { printf("错误:二叉树的层数少于4层!\n"); return; } printf("开始输入权值:\n"); for(i=1;i<=j;i=i+1)//权值的录入 { scanf("%d",&tree[i].c); tree[i].lchild=2*i; tree[i].rchild=2*i+1; } printf("成功创建二叉树\n"); } int leaves()//统计叶子个数函数 { intl,i; l=0; for (i=1;tree[i].c!=NULL;i++) //计算二叉树结点的个数 { l++; } if ((l%2)) //判断结点的奇偶性从而计算叶子的个数 { return(((l-1)/2)+1); } else return(l/2); } int deep()//求二叉树的深度 { intd,i,sum; sum=1; for (i=1;tree[i].c!=NULL;i++); //计算二叉树结点的个数 for (d=1;sum<=i;d++) //求出二叉树的深度 { if (d!=1) { sum=sum+sum*2; } } return(d-1); } void qian(int a)//前序遍历输出列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf { if (tree[a].c!=NULL) //判断当前结点是否有值,若有执行如下操作,若无则返回上一层 { printf("%d,",tree[a].c); //首先输出当前结点(根节点)的权值 qian((a*2)); //递归调用,用当前结点的左孩子作根节点重复当前函数的操作 qian((a*2+1)); //递归调用,用当前结点的右孩子作根节点重复当前函数的操作} else return; } void zhong(int a)//中序遍历输出列表 { if (tree[2*a].c!=NULL) //首先判断当前结点的左孩子是否为空,不是就进行递归调用,用当前结点的左孩子作 根节点重复当前函数的操作 { zhong((2*a)); } printf("%d,",tree[a].c); //输出当前结点的权值 if (tree[2*a+1].c!=NULL) //判断当前结点的右孩子是否为空,不是就进行递归调用,用当前结点的右孩子作根节点重复当前函数的操作 { zhong((2*a+1)); } } void hou(int a)//后序遍历输出序列 { if (tree[2*a].c!=NULL) //判断当前结点的左孩子是否为空,不是就进行递归调用,用当前结点的左孩子作根节点重复当前函数的操作 { hou((2*a)); } if (tree[2*a+1].c!=NULL) //判断当前结点的右孩子是否为空,不是就进行递归调用,用当前结点的右孩子作根节点重复当前函数的操作 { hou((2*a+1)); } printf("%d,",tree[a].c); //输出当前结点的权值 } void main() { intd,l,i; i=10; printf("******************目录******************\n"); printf("1、创建二叉树\n"); printf("2、统计叶子个数\n"); printf("3、求二叉树的深度\n"); printf("4、前序遍历输出列表\n"); printf("5、中序遍历输出列表\n"); printf("6、后序遍历输出序列\n"); printf("0、退出操作\n"); printf("*****************************************\n"); while(i!=0) { printf("选择操作:\n"); scanf("%d",&i); if(i==0) { break; } else if(i==1) { printf("开始创建二叉树(层数不少于4层)\n"); creat(); } else if(i==2) { l=leaves(); printf("叶子个数为:%d\n",l); } else if(i==3) { d=deep(); printf("二叉树的深度是%d\n",d); } else if(i==4) { printf("用前序遍历输出的结果是:\n"); qian(1); printf("\n"); } else if(i==5) { printf("用中序遍历输出的结果是:\n"); zhong(1); printf("\n"); } else if(i==6) { printf("用后序遍历输出的结果是:\n"); hou(1); printf("\n"); } else printf("错误:没有该操作!\n"); } printf("欢迎使用!\n"); }
本文档为【数据结构课程设计二叉树相关操作源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_751406
暂无简介~
格式:doc
大小:22KB
软件:Word
页数:0
分类:工学
上传时间:2019-06-28
浏览量:26