第六章-树(算法设计)许昌网络公司

上传人:张哥 文档编号:190777194 上传时间:2023-03-01 格式:DOC 页数:5 大小:22KB
收藏 版权申诉 举报 下载
第六章-树(算法设计)许昌网络公司_第1页
第1页 / 共5页
第六章-树(算法设计)许昌网络公司_第2页
第2页 / 共5页
第六章-树(算法设计)许昌网络公司_第3页
第3页 / 共5页
资源描述:

《第六章-树(算法设计)许昌网络公司》由会员分享,可在线阅读,更多相关《第六章-树(算法设计)许昌网络公司(5页珍藏版)》请在装配图网上搜索。

1、第六章 树(算法设计)一、树的算法验证程序已知一棵具有n个结点的完全二叉树被顺序存储在一维数组An中,试编写一个算法输出Ai结点的双亲和所有孩子。void parent(int a,int n,int i)if(i=1) printf(无双亲 n);return;elseprintf(双亲:%dn,a(i-1)/2);void child(int a,int n,int i) /*i为序号 */int queueMAX,front=0,tail=0,p; /* 队列作为辅助,存储孩子的序号*/queue0=i;tail+;while(fronttail)p=queuefront+;if(p!=

2、i)printf(%d ,ap-1); /*自身不输出 */if(2*p=n)queuetail+=2*p;if(2*p+1data=ch;create(&(*T)-lchild);create(&(*T)-rchild); void inorder(NODE *p) /中序编历二叉树if(p!=NULL)inorder(p-lchild);printf(%c ,p-data);inorder(p-rchild);int num=0;void count(NODE *p) /统计出二叉树中单孩子的结点数方法1if(p!=NULL)count(p-lchild);if(p-lchild!=NUL

3、L&p-rchild=NULL|p-lchild=NULL&p-rchild!=NULL)num+;count(p-rchild);void count1(NODE *p,int *num1)if(p!=NULL)count1(p-lchild,num1);if(p-lchild!=NULL&p-rchild=NULL|p-lchild=NULL&p-rchild!=NULL)(*num1)+;count1(p-rchild,num1);int onechild(NODE *t) /统计出二叉树中单孩子的结点数方法2int num1,num2;if(t=NULL) return(0);else

4、 if(t-lchild=NULL&t-rchild!=NULL|t-lchild!=NULL&t-rchild=NULL)return(onechild(t-lchild)+onechild(t-rchild)+1);elsenum1=onechild(t-lchild);num2=onechild(t-rchild);return(num1+num2);int sum(NODE *t) /统计出二叉树中所有结点数if(t=NULL) return(0);else return(sum(t-lchild)+sum(t-rchild)+1);int leaf(NODE *t) /统计出二叉树中

5、叶子结点数if(t=NULL) return(0);else if(t-lchild=NULL&t-rchild=NULL) return(leaf(t-lchild)+leaf(t-rchild)+1);elsereturn(leaf(t-lchild)+leaf(t-rchild);void preorder1(NODE *root) /非递归二叉树前序编历 NODE *p,*s100,*q; /q为p的双亲结点int top=0; /top为栈顶指针p=root;q=p;while(p!=NULL)|(top0) while(p!=NULL)printf(%d ,p-data);s+to

6、p=p; p=p-lchild; p=stop-; p=p-rchild; void delk(NODE *root,char k) /删去并释放数据值为k的叶结点 NODE *p,*s100,*q; /q为p的双亲结点int top=0; /top为栈顶指针if(*root)=NULL)return;if(*root)-lchild=NULL &(*root)-rchild=NULL&(*root)-data=k) *root=NULL;return;p=*root;q=p;while(p!=NULL)|(top0) while(p!=NULL)if(p-lchild=NULL&p-rchi

7、ld=NULL &p-data=k)if(q-lchild=p) q-lchild=NULL;else q-rchild=NULL; free(p);return;s+top=p; q=p; p=p-lchild; p=stop-; q=p;p=p-rchild; void lev_traverse(NODE *T) /按层次从上到下,每层从右到左的顺序列出二叉树所有结点的数据信息NODE *q100,*p;int head,tail;q0=T;head=0;tail=1;while(headdata);if(p-rchild!=NULL)qtail+=p-rchild;if(p-lchild

8、!=NULL)qtail+=p-lchild;int depth(NODE *t) /求二叉树的深度int num1,num2;if(t=NULL) return(0);if(t-lchild =NULL&t-rchild =NULL) return(1);elsenum1=depth(t-lchild );num2=depth(t-rchild );if(num1num2)return(num1+1);elsereturn(num2+1);int onechild3(NODE *root) /非递归统计出二叉树共有多少个度为1的结点 NODE *p,*s100;int top=0,num=0

9、; /top为栈顶指针p=root;while(p!=NULL)|(top0) while(p!=NULL)if(p-lchild!=NULL&p-rchild=NULL |p-lchild=NULL&p-rchild!=NULL)num+;s+top=p; p=p-lchild; p=stop-; p=p-rchild; return num;int like(NODE *t1,NODE *t2) /判定两颗二叉树是否相似int like1,like2;if(t1=t2&t2=NULL) return(1);else if(t1=NULL &t2!=NULL|t1!=NULL&t2=NULL

10、) return(0);elselike1=like(t1-lchild,t2-lchild);like2=like(t1-rchild ,t2-rchild );return(like1&like2);char a100; /数组顺序存储二叉树void change(NODE *t,int i) /将二叉树的链接存储转换为顺序存储 if(t!=NULL) ai=t-data;change(t-lchild,2*i);change(t-rchild,2*i+1);int complete(NODE *t) /判断二叉树是否为完全二叉树int i,flag=0;change(t,1);for(i=1;i100;i+)if(!flag&ai=0) flag=1;if(flag&ai!=0) break;if(i=100) return(1);else return(0);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!