【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day18 | 左kid右兄弟 | 真题代码解析

举报
府学路18号车神 发表于 2022/04/11 15:15:23 2022/04/11
【摘要】 每天刷一道题,话不多说,先刷近两年的题吧,现在是2021年的真题了,如果有一起的可以加入我们!!!一起来刷题,冲击国赛!!! 2021年第十二届蓝桥杯赛题总览2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题! 左孩子右兄弟 (题目)(本题总分:15分)官方练习系统:https://www.lanqiao.cn/problems/1462/learn...

每天刷一道题,话不多说,先刷近两年的题吧,现在是2021年的真题了,如果有一起的可以加入我们!!!

一起来刷题,冲击国赛!!!


2021年第十二届蓝桥杯赛题总览

2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
在这里插入图片描述

左孩子右兄弟 (题目)

(本题总分:15分)

官方练习系统:https://www.lanqiao.cn/problems/1462/learning/


—>【问题描述】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


解析


通过阅读题干,本题——难度中等:⭐⭐⭐

考察类型:链表、递归

考察知识点:递归


分析:

这道题是考链表。可以发现左孩子右兄弟的存储方法,对于树上的一个节点,它的所有儿子都会按照某种顺序依次成为它的右儿子,右儿子的右儿子,右儿子的右儿子的右儿子…依次类推深度不断增加。

这里就有一个递归的结论:对于一个节点,只有把它的所有儿子形成的子树中,转化为二叉树深度最深的儿子放到最下边,才会最优。

对于每个结点的所有儿子顺序选择,只需要选择它的儿子形成的子树中转化成二叉树高度最高的放到最后边就能得到最优答案。

周末摸摸鱼~

下面直接开干!!!


代码

Python代码实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/3/12 12:51
# @Author  : 府学路18号车神
# @Email   :yurz_control@163.com
# @File    : Day18.py

import sys

sys.setrecursionlimit(100000)

g = [[] for i in range(10**5+10)]

def dfs(u):
    res = 0
    cnt = len(g[u])
    for x in range(0, len(g[u])):
        res = max(res, dfs(g[u][x])+cnt)
    return res

n = int(input())

for y in range(2, n+1):
    temp = int(input())
    g[temp].append(y)
res = dfs(1)
print(res)

在这里插入图片描述

由此,我们可以快速得出结果,验证完毕!


今天开刷第 十八 天,欢迎大家加入,一起变强,一起自律,一起上国赛!!!

有不同解法的可以在下面留言哦!~

往期刷题路线:

刷题路线 Detail
2020年
Day-01 门牌制作
Day-02 寻找2020
Day-03 跑步锻炼
Day-04 蛇形填数
Day-05 排序
Day-06 装饰珠
Day-07 成绩统计
Day-08 单词分析
Day-09 数字三角形
Day-10 平面切分
2021年
Day-11 卡片
Day-12 直线
Day-13 货物摆放
Day-14 路径
Day-15 回路计数
Day-16 时间显示
Day-17 杨辉三角

官方刷题练习系统:http://lx.lanqiao.cn/


❤坚持读Paper,坚持做笔记,坚持学习,坚持刷力扣LeetCode❤!!!
坚持刷题!!!冲击国赛
To Be No.1

⚡⚡


创作不易⚡,过路能❤关注收藏点个赞三连就最好不过了

ღ( ´・ᴗ・` )

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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