首页 > 编程语言 >[Python手撕]二叉树中的最大路径和

[Python手撕]二叉树中的最大路径和

时间:2024-10-03 09:45:21浏览次数:5  
标签:right val Python self 路径 二叉树 root left

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxPathSum(self, root: Optional[TreeNode]) -> int:

        def maxpath(root):
            # 叶子结点下面的空节点直接返回0
            if not root:
                return 0

            # 左边的最大路径和右边的最大路径
            # 如果有一边的路径是负数,那就丢掉这边的路径
            left = max(maxpath(root.left), 0)
            right = max(maxpath(root.right), 0)

            # 更新以当前节点为拐点的路径
            # 如果所有节点都是负数,会这在里保留最大的负数
            self.res = max(self.res, root.val + left + right)

            # 向上返回当前节点和较大的一个侧边
            return root.val + max(left, right)

        self.res = -float("inf")
        maxpath(root)
        return self.res

标签:right,val,Python,self,路径,二叉树,root,left
From: https://www.cnblogs.com/DCFV/p/18445407

相关文章

  • 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字
    全网最适合入门的面向对象编程教程:55Python字符串与序列化-字节序列类型和可变字节字符串摘要:在Python中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构,字节序列和可变字节字符串的主要区别在于其可变性和用途,bytearray是可变的字节序列......
  • lazy_loader python 子包以及函数懒加载框架
    lazy_loaderpython子包以及函数懒加载框架,内部处理上是基于了importlib.import_module进行动态加载包含的特性可以确保子模块对于用户的可见行,不引起而外的开销允许外部库在使用的时候被加载,提升导入时间说明此包在kedro的datasets模块中使用比较多,基本上每个datase......
  • python必会的函数或者操作
    排序sorted(data,reverse=TrueorFalse)zip()将多个可迭代对象打包成一个元组列表listorset(zip())map()对可迭代对象中的每个元素应用函数map(data,func)filter()跟map类似的用法reduce()对可迭代对象中的元素进行累计计算fromfunctoolsimportreduce......
  • 树上最值路径 题解
    题意简述给你一棵\(n\)个结点的树,编号为\(1\simn\),求有多少路径\(\operatorname{Path}(u\rightarrowv)\),满足\(u=\max\{x\midx\in\operatorname{Path}(u\rightarrowv)\}\),\(v=\min\{x\midx\in\operatorname{Path}(u\rightarrowv)\}\)。......
  • python+flask计算机毕业设计门诊管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展和患者需求的日益增长,传统的手工门诊管理模式已难以满足现代医院高效、精准、便捷的服务要求。门诊作为医院面向患......
  • 【python应用】最牛逼的Python API文档生成:Sphinx全攻略
    原创蔡大叔在Python开发的世界里,代码的文档化是至关重要的。它不仅帮助开发者理解代码的功能和用法,还能在团队协作中发挥巨大作用。Sphinx,作为一个强大的文档生成器,已经成为Python项目文档化的首选工具。本文将带你全面了解如何使用Sphinx为你的Python项目生成精美且实用的API......
  • python字典添加_增
    在Python中,字典(dictionary)是一种可变容器模型,且可存储任意类型对象。字典的每个元素都是一个键值对(key-valuepair)。添加新项到字典中非常直接,可以通过直接给字典指定一个新的键并赋予一个值来完成。如果指定的键在字典中不存在,则这个新项会被添加到字典中;如果键已存在,则对应的值......
  • python字典获取_查
    在Python中,字典(dict)是一种用于存储键值对(key-valuepairs)的内置数据结构。字典的键(key)必须是唯一的,而值(value)则可以是任何数据类型。使用字典时,经常需要获取(或查询)与特定键相关联的值。下面介绍几种获取字典中值的方法:1.直接通过键访问如果你知道键的确切名称,可以直接使用键来......
  • [Python手撕]网格中的最短路径(可以有k次破墙的机会)
    classSolution:defshortestPath(self,grid:List[List[int]],k:int)->int:n=len(grid)m=len(grid[0])ifm==n==1:return0direction=[[0,1],[-1,0],[1,0],[0,-1]]visited=[[[......
  • 土地资源的可持续管理:探索长期利用的绿色路径
    在全球化与城市化的双重驱动下,土地资源的可持续管理已成为保障人类福祉与地球健康的迫切议题。本文将深入剖析实现土地资源长期可持续利用的策略与实践,从理论到实践,全方位探索这条绿色发展的必由之路。一、土地资源的现状与挑战当前,土地退化、耕地减少、城市蔓延......