C++ HOJ 求解二叉树的宽度(队列实现)
来源:互联网 发布:淘宝文胸买家秀 编辑:程序博客网 时间:2024/05/18 16:13
【摘要】
我们可以把二叉树中每层的节点依次放入一个队列中。设置一个变量width用于存储树的宽度。每一层的节点入队时计算该层节点的数目,如果该层次节点的数目大于width的值,那么把该层次节点的数目赋给width.如此,对二叉树按层遍历一遍之后width中保存的就是该二叉树的宽度。
【算法思想】
队列实现层次遍历,找到下一层的子节点入队,子节点一次遍历保证一次单层测宽,最终获取树宽。
【源码实现】
int WidthOfTheTree(Node* pRoot) { if(pRoot==NULL) return 0; queue<Node*> MyQueue2; MyQueue2.push(pRoot); int width=1; int curwidth=1; int nextwidth=0; while(!MyQueue2.empty()) { while(curwidth!=0) { Node* pTmp=MyQueue2.front(); MyQueue2.pop(); curwidth--; if(pTmp->pLeft!=NULL) { MyQueue2.push(pTmp->pLeft); nextwidth++; } if (pTmp->pRight!=NULL) { MyQueue2.push(pTmp->pRight); nextwidth++; } } if(nextwidth>width) width=nextwidth; curwidth=nextwidth; nextwidth=0; } return width; }
0 0
- C++ HOJ 求解二叉树的宽度(队列实现)
- 二叉树的宽度优先遍历(队列实现)
- 队列实现 二叉树的宽度优先遍历
- 求二叉树的宽度C语言版
- 二叉树的性质极其二叉树的构建、各种遍历以及深度宽度的求解
- 二叉树的宽度(二叉树)
- 使用队列实现二叉树按层次遍历(C++)
- 二叉树的宽度
- 二叉树的宽度
- 二叉树的宽度
- 数据结构(C语言版)”栈与队列“章节迷宫求解问题的思路与实现
- C语言实现二叉树的各种遍历及求解深度
- C语言实现二叉树的各种遍历及求解深度
- 二叉队列的实现
- 【C/C++】【用队列结构实现二叉树的层次遍历】
- 队列实现二叉树的遍历
- 栈,队列和二叉树的实现
- 输出二叉树的宽度
- signed int 和 unsigned int 在一起运算
- virtualbox安装ubuntu后共享文件夹自动挂载问题
- AGG-SVG学习笔记 [2015-07-07]
- springMVC学习笔记-请求处理&springMVC form标签
- Implement Queue using Stacks
- C++ HOJ 求解二叉树的宽度(队列实现)
- 几种推荐算法的总结
- 京都中文离线地图App上线
- Dynamics CRM 2015 Update 1 系列(6): 并发执行优化 - Optimistic Concurrency
- 【C++ STL】算法 <algorithm>中各种算法解析
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- gdb调试--堆栈相关
- 把 字符串转换为整数的算法
- Bluetooth: ATT and GATT