码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 初学python记录:力扣2385. 感染二叉树需要的总时间


    题目:

    给你一棵二叉树的根节点 root ,二叉树中节点的值 互不相同 。另给你一个整数 start 。在第 0 分钟,感染 将会从值为 start 的节点开始爆发。

    每分钟,如果节点满足以下全部条件,就会被感染:

    • 节点此前还没有感染。
    • 节点与一个已感染节点相邻。

    返回感染整棵树需要的分钟数。

    提示:

    • 树中节点的数目在范围 [1, 105] 内
    • 1 <= Node.val <= 105
    • 每个节点的值 互不相同
    • 树中必定存在值为 start 的节点

    思考:

    因为起始节点可能在二叉树的任何位置,所以将二叉树转换成无向图,记录每个节点的相邻节点,便于计算。

    然后遍历图,计算起始节点到每个节点的距离,最大距离即为题目所求。代码如下:

    1. # Definition for a binary tree node.
    2. # class TreeNode(object):
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. from collections import defaultdict
    8. class Solution(object):
    9. def amountOfTime(self, root, start):
    10. """
    11. :type root: Optional[TreeNode]
    12. :type start: int
    13. :rtype: int
    14. """
    15. # 把二叉树转换成无向图
    16. # 字典的键表示每个节点的值,字典的值表示该节点相邻的节点的值
    17. # 为字典中尚未存在的键指定一个默认值(空列表)
    18. graph_dict = defaultdict(list)
    19. def makeGraph(node, parent):
    20. if node:
    21. if parent:
    22. graph_dict[node.val].append(parent.val)
    23. graph_dict[parent.val].append(node.val)
    24. if node.left:
    25. makeGraph(node.left, node)
    26. if node.right:
    27. makeGraph(node.right, node)
    28. makeGraph(root, None)
    29. # 从起始节点开始找到最远的路径
    30. queue = [start] # 队列
    31. visited = {start} # 集合set储存已访问的节点
    32. distance = {start: 0} # 字典表示每个节点距离起始点的距离
    33. ans = 0
    34. while queue:
    35. x = queue.pop(0)
    36. for node in graph_dict[x]:
    37. if node not in visited:
    38. queue.append(node)
    39. visited.add(node)
    40. distance[node] = distance[x] + 1
    41. if distance[node] > ans:
    42. ans = distance[node]
    43. return ans

    提交通过:

     

  • 相关阅读:
    chales 重写/断点/映射/手机代理/其他主机代理
    Java基础20问(1-5)
    秋招面试之MySQL:面试常考题(附答案)+MySQL性能调优经验,秋招必胜!
    【Pytorch with fastai】第 4 章 :底层训练数字分类器
    【中国知名企业高管团队】系列25:360
    使用promise创建一个同步事件驱动api
    东航携手抖音生活服务开启机票首播,推出国内、国际超值机票次卡
    FFplay文档解读-33-视频过滤器八
    Java下对象的序列化和反序列化(写出和读入)
    计算机毕设 大数据工作岗位数据分析与可视化 - python flask
  • 原文地址:https://blog.csdn.net/Demo0219/article/details/138165287
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号