求二叉树宽度
2016-03-19 10:00
381 查看
#include<stdio.h> #include<stdlib.h> #define NULL 0 #define MAXSIZE 100 typedef struct BTNode { struct BTNode *lchild,*rchild; int data; }BTNode,*btnode; typedef struct { btnode p; int lno; }St; void createBtree(btnode &T) { int t; scanf("%d",&t); if(t==0) T=NULL; else { T=(btnode)malloc(sizeof(BTNode)); T->data=t; createBtree(T->lchild); createBtree(T->rchild); } } int maxWidth(btnode &b) { St que[MAXSIZE]; int front,rear,n; int Lno,i,j,max; btnode q; front=rear=0; if(b) { ++rear; que[rear].p=b; que[rear].lno=1; while(front!=rear) { ++front; q=que[front].p; Lno=que[front].lno; if(q->lchild) { ++rear; que[rear].p=q->lchild; que[rear].lno=Lno+1; } if(q->rchild) { ++rear; que[rear].p=q->rchild; que[rear].lno=Lno+1; } } max=0; for(i=1;i<=Lno;i++) { n=0; for(j=1;j<=rear;j++) if(que[j].lno==i) ++n; if(n>max) max=n; } return max; } else return 0; } void main() { btnode T; int w; createBtree(T); w=maxWidth(T); printf("width=%d\n",w); }
相关文章推荐
- 94.Txx考试
- 数据链路层&网络层-教主
- python常用模块
- Android五种常用数据的存储方式
- 3629: [JLOI2014]聪明的燕姿|约数和|DFS
- 每天一点Swift(五)控制器的生命周期和SizeClass
- SVN使用
- TCP&UDP协议小结
- Class.forName(driver)出错。(解决)
- hdu 4941 Magical Forest(STL之map应用)
- select、poll、epoll之间的区别总结
- 华为2014年校园招聘机试题(1)
- ElasticSearch之QueryBuilders
- 软件工程个人作业02
- ElasticSearch之QueryBuilders
- 学习dangdang的分库分表扩展框架sharding-jdbc(一)
- iOS-设置文本行高并计算高度
- esp8266音频方案分析
- JAVA 比较两个日期相差的天数
- 网页设计中常见的几种布局