【Python训练营】Python每日一练----第11天:完全二叉树的权值

举报
是Dream呀 发表于 2022/02/07 22:11:22 2022/02/07
1.7k+ 0 0
【摘要】 📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 🏅🏅🏅CSDN Python领域优质创作者,大二在读,欢迎大家...

在这里插入图片描述

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜
🏅🏅🏅CSDN Python领域优质创作者,大二在读,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟✨✨✨

前言:【Python训练营】是针对Python语言学习所打造的一场刷题狂欢party! 对基础知识把握不牢固的话,欢迎参考此套课程:Python公开课 搭配使用最佳嗷~喜欢的话就抓紧订阅起来吧!🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者在文末添加我的VX,我会拉你进学习交流群,我们一起交流学习,报团打卡

小差:过年结束,开始正常工作模式!

  

题目描述

题目描述
给定一棵包含 NN 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A_1, A_2, ··· A_N ,如下图所示:

在这里插入图片描述

现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。

注:根的深度是 1。
输入描述
第一行包含一个整数 N。
第二行包含 NN 个整数 A_1, A_2, ··· A_N

输出描述
输出一个整数代表答案。

输入输出样例
示例
输入
7
1 6 5 4 3 2 1

输出
2

  
运行限制
最大运行时间:1s
最大运行内存: 256M

  

解题思路

  • 首先在第二行输入数据时,我们使用列表存储我们的数据,list(map(int,input().split()))依次输入N个数字,以空格键进行分割;
  • 运用数学math库中的log求层数;
  • 然后创建空列表存储每一层的值;
  • 切片输入的数据,代表每一层的数据,每一层开始时的编号是2 ** i,又由于列表切片从0开始,故开始时要减一最后的编号是2**(i+1),又因为切片时左闭右开,故末尾不需要-1.
  • 最后得到列表中的最大的元素编号,由于0是初始索引值,且最小的层数是1,需要我们得到的需要+1便是最后的层数。

源码分享

# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
# @Time    : 2022/2/4 13:06
# @Author  : 是Dream呀!
# @File    : 完全二叉树的权值.py
import os
import sys
import math
# 请在此输入您的代码
N = int(input())
# 依次输入N个数字,以空格键进行分割
x = list(map(int,input().split()))
# 运用数学math库中的log求层数
I = int(math.log2(N))+1
# 创建空列表存储每一层的值
a = []
for i in range(I):
    # 切片输入的数据,代表每一层的数据,每一层开始时的编号是2**i,又由于列表切片从0开始,故开始时要减一;
    # 最后的编号是2**(i+1),又因为切片时左闭右开,故末尾不需要-1.
  a.append(sum(x[2**i-1:2**(i+1)-1]))
# 得到列表中的最大的元素编号,由于0是初始索引值,且最小的层数是1,需要我们得到的需要+1便是最后的层数。
print(a.index(max(a))+1)
  

学习总结

1.连续输入多个值以空格键分开:input().split(),将这些值以列表形式存储:list(map(int,input().split())) 固定用法和形式,牢记
2.math库中的log函数使用方法:log(8,2)或者log2(8)

🏅今天是我在Python训练营的第 11 天,希望每天都能见到最棒的你🏅

🏆往期文章----好文推荐🏆

🥇 [Python公开课]零基础玩转Python基础篇----第一节:Python的自我介绍

🥈 [Python公开课]零基础玩转Python进阶篇----第一节:Python中的文件操作

🥉 快来一场一场刷题狂欢的party吧!----【Python训练营】
🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述

文章来源: xuyipeng.blog.csdn.net,作者:是Dream呀,版权归原作者所有,如需转载,请联系作者。

原文链接:xuyipeng.blog.csdn.net/article/details/122782642

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。