二叉树高度与宽度
来源:互联网 发布:java集合类图解 编辑:程序博客网 时间:2024/05/17 23:21
C++
#include <iostream>#include <queue>#define MAXN 16using namespace std;int n; // 结点数int tree[MAXN][2]; // 树void input() { cin >> n; int i; for (i = 1; i <= n; i++) { cin >> tree[i][0]; cin >> tree[i][1]; }}int max(int a, int b) { return a > b ? a : b;}int maxHeight(int id) { // 子树高度 int hl = tree[id][0] != 0 ? maxHeight(tree[id][0]) : 0; int hr = tree[id][1] != 0 ? maxHeight(tree[id][1]) : 0; // 本结点高度 int h = max(hl, hr) + 1; return h;}int maxWidth(int id) { int WLastLevel = 0; // 以传入为树根,上一层不存在,宽度为0 int maxW = 1; // 若只有树根,宽度为1 queue<int> q; // 用以广搜的队列 q.push(id); // bfs while (!q.empty()) { // 由上一层结点得出这一层结点后,队列长度即这层宽度 while (WLastLevel != 0) { int root = q.front(); q.pop(); if (tree[root][0] != 0) { q.push(tree[root][0]); } if (tree[root][1] != 0) { q.push(tree[root][1]); } WLastLevel--; } // 记录最大值,准备处理下一层 WLastLevel = q.size(); maxW = max(maxW, WLastLevel); } return maxW;}int main() { input(); cout << maxWidth(1) << " " << maxHeight(1); return 0;}
0 0
- 二叉树高度与宽度
- 二叉树的宽度与高度
- 求二叉树的高度与宽度
- 二叉树宽度和高度
- 求二叉树高度、宽度
- 树 二叉树最大宽度和高度
- 关于二叉树的宽度,高度,相等
- 二叉树最大宽度和高度
- wikioi1501 二叉树最大宽度和高度
- wikioi1501 二叉树最大宽度和高度
- 求二叉树的高度和宽度
- wikioi 二叉树最大高度和宽度
- 二叉树最大宽度和高度
- 关于二叉树的宽度,高度,相等
- p1501 二叉树最大宽度和高度
- wikioi1501 二叉树最大宽度和高度
- 二叉树--高度,宽度和节点个数
- 二叉树最大宽度和高度
- jetty和udp和tomcat的关联
- OpenStack基于修改ip和配置文件的多节点部署
- Android、java环境搭建流程
- tomcat和maven和sybase的关联
- JQuery_HighCharts生成图形报表_饼状图(模仿后台传送数据 JSON格式)
- 二叉树高度与宽度
- HDU 3232 Crossing Rivers [Ad Hoc]
- leetcode 18. 4Sum
- 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)
- jre和linq和lua的关联
- 四种方案解决ScrollView嵌套ListView问题
- 推荐一个妹子,播报汽车新闻
- opencv和apache和c#的关联
- abap submit 的使用方法