SCAU 数据结构 18924 二叉树的宽度

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

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值