SCAU 数据结构 18924 二叉树的宽度
时间限制:1000MS 代码长度限制:10KB
提交次数:0 通过次数:0
题型: 编程题 语言: 不限定
Description
二叉树的宽度指的是具有节点数目最多的那一层的节点个数。
1
/ \
2 3
/
4
答案为2, 第二层节点数最多,为2个节点。
输入格式
共n行。
第一行一个整数n,表示有n个结点,编号为1至n。(1<=n<=50)
第二行至第n行,每行有两个整数x和y,表示在二叉树中x为y的父节点。x第一次出现时y为左孩子
输出格式
输出二叉树的宽度。
输入样例
5
1 2
1 3
2 4
2 5
输出样例
2
思路:目前看到的大多数代码都是用队列完成的,由于我对队列的运用还不熟练(瑟瑟发抖),所以想到了这种类似于dfs的方式来解答。
首先,用一个结构体数组来实现链表的功能,找到父节点为0的节点——这就是root。
然后,从(root,1)开始向下搜索,如果左(右)子树非空,层数c+1,继续向下搜索。同时level数组记录该层数的节点个数。
最后,在level数组中找到最大值,其对应下标即为ans。
#include<queue>
#include&l

SCAU数据结构题目,探讨如何求解二叉树的最大宽度。通过使用类似于DFS的策略,利用结构体数组模拟链表,从根节点开始逐层搜索,记录每层节点数,最终找出最大宽度。


被折叠的 条评论
为什么被折叠?



