树与二叉树之层次遍历、求二叉树宽度
发布日期:2021-06-29 15:42:44
浏览次数:2
分类:技术文章
本文共 1109 字,大约阅读时间需要 3 分钟。
1.层次遍历
算法思想:建立一个循环队列,先将二叉树头结点如队列,然后出队列,访问该结点,若该结点有左子树则左结点队列,如果有右子树入队列,然后出队访问,直到为空
void level(BTNode *p){ BTNode *queue[maxsize]; int front=0,rear=0; BTNode *q; if(p!=NULL) { rear=(rear+1)%maxsize; queue[rear]=p; while(front!=rear) { front=(front+1)%maxsize; q=queue[front]; cout<data; if(q->lchild!=NULL) { rear=(rear+1)%maxsize; queue[rear]=q->lchild; } if(q->rchild!=NULL) { rear=(rear+1)%maxsize; queue[rear]=q->rchild; } } }}
2.二叉树层次遍历应用之求二叉树的宽度
//对所有结点记录层数,通过层次遍历;最后对所有结点统计每一层的结点数,最大即为所求 typedef struct{ BTNode *p; int lno;}St;int maxNode(BTNode *b){ St queue[maxsize];int front=0,rear=0; BTNode *q;int max,Lno,i,j,n; if(p!=NULL) { rear++; queue[rear].p=b; queue[rear].lno=1; while(front!=rear) { front++; q=queue[front].p; Lno=queue[front].lno; if(q->lchild!=NULL) { rear++; queue[rear].p=q->lchild; queue[rear].lno=Lno+1; } if(q->rchild!=NULL) { rear++; queue[rear].p=q->lchild; queue[rear].lno=Lno+1; } } max=0; for(i=1;i<=Lno;i++) { n=0; for(j=1;j<=rear;j++) { if(queue[j].lno==i) n++; if(max
转载地址:https://codingchaozhang.blog.csdn.net/article/details/85257310 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年05月01日 09时03分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
一文读懂全系列树莓派!
2019-04-29
自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶
2019-04-29
聊聊我是如何编程入门的
2019-04-29
J-Link该如何升级固件?
2019-04-29
485通信自动收发电路,历史上最详细的解释
2019-04-29
一位头发发白的神人教你怎么写程序,运维,买电脑,写文章,平面设计!
2019-04-29
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2019-04-29
5G小科普(漫画版,So easy!)
2019-04-29
「第四篇」电赛控制题可以准备一些什么?
2019-04-29
「第六篇」对于电赛,我们应该看重什么?
2019-04-29
树莓派翻车了
2019-04-29
这位电子工程师,你不能错过。
2019-04-29
「重磅猜题之第二篇」2019年大学生电子设计竞赛
2019-04-29
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2019-04-29
基于 Hystrix 高并发服务限流第 2 篇 —— 服务隔离(线程池隔离、信号量隔离)
2019-04-29
SpringBoot 整合 JWT 实现统一认证
2019-04-29
TypeError: this.getOptions is not a function
2021-07-02
el-table 二维数组合并行
2019-04-29
UR5e机械臂运行一直阻塞在waitForServer
2019-04-29