• 初学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

    提交通过:

     

  • 相关阅读:
    自动化之python面试
    【appium】Hybrid应用自动化|微信小程序自动化
    LyScript 实现绕过反调试保护
    信息学奥赛一本通:1164:digit函数
    TRC丨艾美捷 TRC 塞来昔布甲酯说明书
    Android Studio 的六种基本布局
    044_第三代软件开发-保存PDF
    Python学习基础笔记七十三——调试程序
    汇编 --- 用户程序的结构 和 程序加载
    推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排技术实战
  • 原文地址:https://blog.csdn.net/Demo0219/article/details/138165287