博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[深搜]CODEVS-1501 二叉树最大宽度和高度
阅读量:3731 次
发布时间:2019-05-22

本文共 918 字,大约阅读时间需要 3 分钟。

思路:

此题要求求出树的最大宽度和高度。首先明确什么是二叉树:每个节点最多有两个孩子,而且左右孩子有区别。在借鉴了其他csdn博客,了解到此题主要考察深度优先搜索。数据存储方式按照题目格式来,建立二维数组。(在草稿纸上画出来二维数组内容更容易理解数据以及调用方式。)深度则一层层深搜即可。宽度的话,在深搜过程中记录每一层的访问次数,就是该层的宽度啦,保存在数组中,最后求最大宽度即可。深搜的过程中记录当前层的宽度,我觉得是此题简洁题解的巧妙之处。每次深搜访问到一层,说明该层有节点,则宽度加一。另外,注意输出的格式,在一行上。

代码

#include
using namespace std;int tree[20][2], depth = 0, width[20];void deep_search(int node, int floor) //floor当前层数 { if(floor > depth) depth = floor; //更新深度 width[floor] ++; //更新当前层宽度 int lchild = tree[node][0], rchild = tree[node][1]; if(lchild != 0) deep_search(lchild, floor + 1); if(rchild != 0) deep_search(rchild, floor + 1);}int main(){ int n, wid = 0, lchild, rchild; //层数,左右孩子编号 cin >> n; for(int i = 1; i <= n; i ++) cin >> tree[i][0] >> tree[i][1]; deep_search(1, 1); for(int i = 1; i <= 19; i ++) if(width[i] > wid) wid = width[i]; cout << wid << " " << depth; return 0;}

参考资料

转载地址:http://mkuin.baihongyu.com/

你可能感兴趣的文章
Redis-Set
查看>>
Redis-Hash
查看>>
Redis-三种特殊的数据类型-geospatial
查看>>
Redis-三种特殊的数据类型-Bitmap
查看>>
Redis-事务
查看>>
算法-将一个字符串转换成一个整数
查看>>
排序算法-堆排序
查看>>
jwt工具类
查看>>
登录逻辑
查看>>
Mybatis-plus解决xml无法加载问题
查看>>
生成订单号工具类
查看>>
表和表之间的关系
查看>>
递归的方式创建菜单
查看>>
递归删除菜单
查看>>
给角色分配菜单
查看>>
算法-数组-接雨水
查看>>
算法-动态规划-最大子序和
查看>>
算法-数组-三数之和
查看>>
算法-数组-买卖股票的最佳时机
查看>>
算法-数组-除自身意外数组的乘积
查看>>