61201225 - 二叉树

通过次数

60

提交次数

88

时间限制 : 1 秒
内存限制 : 128 MB

1.提示信息:

满二叉树:一棵二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是满二叉树,即如果一颗二叉树的层数为k,且结点总数是(2^k)-1,那么它就是满二叉树。

完全二叉树:一颗深度为k的二叉树,除第k层外,其他各层(1至k-1层)的节点数都达到了最大值,且第k层所有节点都连续集中在左边,那么它就是完全二叉树。

节点:包含一个数据元素及若干指向子树分支的信息

权值:对节点赋予的有意义的数量值

深度:也被称为树的亮度,树中所有节点的层次最大值称为树的深度,例如下图的二叉树深度都为4

16099333932403.png

                                                                                          表 1满二叉树

16099334208381.png

                                                                                           表 2完全二叉树

编程实现:

给出一颗包含n个节点的完全二叉树,节点按照从上到下,从左到右的顺序依次排序,每个节点上都有一个权值,如下图,现在需要将同一深度节点的权值加到一起,然后比较每个深度的权值之和,输出权值之和最大的深度值。如果有多个深度的权值之和相同,则输出其中最小的深度(如:深度2权值之和为5,深度3权值之和也为5,则输出2)。

注:根的深度为1

16099334372650.png

第一行输入完全二叉树节点的总数量n(5<n<101).第二行输入n个正整数作为每个节点的权值,输出权值之和最大的深度值(如果有多个深度的权值之和相同则输出其中最小的深度值)。

例如:上图的二叉树,第一行输入为6,第二行输入为1 5 6 1 2 3,深度1的权值之和为1,深度2 的权值之和为11,深度3的权值之和为6,其中深度2的权值之和最大,则输出2,。

输入

第一行输入完全二叉树节点的总数量n(5<n>101).第二行输入n个正整数作为每个节点的权值

输出

输出权值之和最大的深度值(如果有多个深度的权值之和相同则输出其中最小的深度值)

样例

输入

6
1 5 6 1 2 3

输出

2

来源

蓝桥杯省赛