LeetCode 124. 二叉树中的最大路径和(DFS)

文章目录

    • 1. 题目信息
    • 2. 解题

1. 题目信息

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

示例 1:输入: [1,2,3]1/ \2   3输出: 6
示例 2:输入: [-10,9,20,null,null,15,7]-10/ \9  20/  \15   7输出: 42

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 以当前节点为根的子树的最大值

    int curmax = root->val;
    if(left > 0)curmax += left;
    if(right > 0)curmax += right;
    
  • 但是返回给上层使用的时候只能保留一边子树

    max(root->val, max(left+root->val, right+root->val))
    在这里插入图片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {	//C++
public:int maxPathSum(TreeNode* root) {int maxanswer = INT_MIN;maxsum(root, maxanswer);return maxanswer;}int maxsum(TreeNode* root, int &maxanswer) {if(root == NULL)return 0;int left = maxsum(root->left,maxanswer);int right = maxsum(root->right,maxanswer);int curmax = root->val;if(left > 0)curmax += left;if(right > 0)curmax += right;if(curmax > maxanswer)maxanswer = curmax;return max(root->val,max(left+root->val,right+root->val));}
};
  • python3 解答
class Solution:# py3def maxPathSum(self, root: TreeNode) -> int:self.maxsum = float('-inf')def dfs(root):if not root:return 0l = dfs(root.left)r = dfs(root.right)v = root.valcurmax = vif l>0:curmax += lif r>0:curmax += rself.maxsum = max(curmax, self.maxsum)return max(v, max(v+l, v+r))dfs(root)return self.maxsum

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python的reshape的用法:reshape(1,-1)

Python的reshape的用法:reshape(1,-1)https://blog.csdn.net/qq_29831163/article/details/90112000 目录 numpy中reshape函数的三种常见相关用法 reshape(1,-1)转化成1行: reshape(2,-1)转换成两行: reshape(-1,1)转换成1列: …

阿里P8架构师谈:流量高峰时期的性能瓶颈有哪些、以及如何来解决

在高并发大量用户的场景,系统一般会面临如下三个挑战: 1. 日益增长的用户数量 2. 日渐复杂的业务 3. 急剧膨胀的数据 这些挑战对于性能优化而言表现为:在保持和降低系统TP95响应时间(指的是将一段时间内的请求响应时间从低到高…

详解凸优化、图神经网络、强化学习、贝叶斯方法等四大主题

加入AI行业拿到高薪仅仅是职业生涯的开始。现阶段AI人才结构在不断升级,对AI人才的要求也不断升高,如果对自己没有很高的要求,其实很容易被快速发展的趋势所淘汰。为了迎合时代的需求,我们去年推出了《机器学习高端训练营》班。这…

可扩展的TextView,ExpandableTextView与Scroller类的使用

转载时请注明出处,尊重他人的劳动成果,谢谢。 废话不多说,先上图演示下成果(图有些丑,别见怪): 最近一直在研究Scroller类的使用方法,看了很多遍别人的例子总是感觉不得要领,最后还是自己实践…

消息中间件系列(三):主流的消息队列中间件有哪些?

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka&#…

谷歌40人发表59页长文:为何真实场景中ML模型表现不好?

文 | 白鹡鸰编 | 夕小瑶大家好哇,我是上周那篇《NLP太卷了,我去研究蛋白质了》的漫画作者白鹡鸰~前不久,在卖萌屋NLP群里默默潜水的白鹡鸰被群友提到的一篇Google几天前放出的59页超长论文炸得飞了起来。来,大家来感受一下气势浩大…

圆形进度条以及百分率指示器 Scroller类的练习

转载时请注明出处,尊重他人的劳动成果,谢谢。 先附上效果图: 这个控件是动态加载到75%的,主要我忘了怎么做动态图,就先放一个静态图在这里表示表示。旁边这个没有没有喜欢的?有想知道的 我可以告诉答案。…

阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解

本文涉及的内容以及知识点如下: 1、单体架构 2、单体架构的拆分 3、SOA与微服务的区别 4、微服务的优缺点 5、微服务的消息 6、服务集成 7、数据的去中心化 单体架构 Web应用程序发展的早期,大部分web工程是将所有的功能模块(service…

我拿乐谱训了个语言模型!

文 | 花椒最近在刷EMNLP论文的时候发现一篇非常有趣的论文《Learning Music Helps You Read: Using Transfer to Study Linguistic Structure in Language Models》,来自斯坦福大学NLP组。论文有趣的发现是让语言模型先在乐谱上进行训练,再在自然语言上训…

LeetCode 146. LRU缓存机制(哈希链表)

文章目录1. 题目信息2. 解题2.1 手动实现list2.2 使用内置list1. 题目信息 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓…

微服务系列:服务注册与发现的实现原理、及实现优劣势比较

服务注册与发现的来源 首先,服务注册与发现是来自于微服务架构的产物。 在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。而在微服务应用中,服务实例…

EMNLP 2020论文分析:知识图谱增强语言模型或是未来的发展趋势!

文 | Michael Galkin源 | AI科技评论在EMNLP 2020的论文投递中,知识图谱的研究热度不减,并成为继续推动NLP发展的重要动力之一。在EMNLP 2020中,知识图谱领域有了哪些最新研究进展呢?作者从中选出了30篇文章,对未来2-3…

如何通过反射来解决AlertDialog标题由于字数过多显示不全的问题

转载前请标明出处:http://blog.csdn.net/sahadev_ 先上一下示例图: 这是默认状态下:这是通过反射后修改的结果: 在解决这个问题之前首先需要了解一下AlertDialog的基本构造,所以先从源码看起: 想要知道为什么显示不…

LeetCode 292. Nim 游戏

文章目录1. 题目信息2. 解题1. 题目信息 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数…

配送A/B评估体系建设实践

2019年5月6日,美团点评正式推出新品牌“美团配送”,发布了美团配送新愿景:“每天完成一亿次值得信赖的配送服务,成为不可或缺的生活基础设施。”现在,美团配送已经服务于全国400多万商家和4亿多用户,覆盖28…

ListView原理简单介绍(着重介绍getView被调用的一系列过程)

今天出去面试,被面试官问到一个问题,说是如果使用 LayoutInflate.inflate(int resource, ViewGroup root, boolean attachToRoot);这个方法与AbsListView的实现类结合使用的话,会出现什么问题,先看简单的使用过程: Ove…

一人之力,刷爆三路榜单!信息抽取竞赛夺冠经验分享

文 | JayLou娄杰在现如今的NLP竞赛中,信息抽取(IE)任务已占据半壁江山。来,让我们看看今年的一些IE竞赛都有啥:看到如此众多的IE竞赛,心动的JayJay抽空参加了CHIP2020(中国健康信息处理大会&…

pkuseg:一个多领域中文分词工具包

pkuseg简单易用,支持细分领域分词,有效提升了分词准确度。 目录 主要亮点编译和安装各类分词工具包的性能对比使用方式相关论文作者常见问题及解答主要亮点 pkuseg具有如下几个特点: 多领域分词。不同于以往的通用中文分词工具,此…

积木Sketch Plugin:设计同学的贴心搭档

| A consistent experience is a better experience.——Mark Eberman | 一致的体验是更好的体验。——Mark Eberman 《摘自设计师的16句名言》 背景 1.UI一致性项目 积木(Tangram)Sketch插件源于美团外卖UI的一致性项目,该项目自2019年5月份…

简单讲述一下Intent的传值过程

昨晚带女友Android入门,她本是照着一本书敲得,可以运行,后来她自己凭思维自己写了一个,然后出现了值没有传过来的问题,然后简单的了解了一下Intent是如何传递数据的。 我们的例子是这样的: 由A Activity通…