LeetCode 124. 二叉树中的最大路径和(DFS)
发布日期:2021-07-01 03:13:50
浏览次数:2
分类:技术文章
本文共 1801 字,大约阅读时间需要 6 分钟。
文章目录
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:# py3 def maxPathSum(self, root: TreeNode) -> int: self.maxsum = float('-inf') def dfs(root): if not root: return 0 l = dfs(root.left) r = dfs(root.right) v = root.val curmax = v if l>0: curmax += l if r>0: curmax += r self.maxsum = max(curmax, self.maxsum) return max(v, max(v+l, v+r)) dfs(root) return self.maxsum
转载地址:https://michael.blog.csdn.net/article/details/100171375 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月25日 14时42分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
lambda表达式初探
2019-05-02
C++ Template类模板的特化(3.3节, 3.4节)
2019-05-02
第05章 函数
2019-05-02
第08章 输入和输出
2019-05-02
QT中文乱码的解
2019-05-02
网上Qt多线程同步的一种普遍误识
2019-05-02
libcurl smtp发送邮件附件大小限制问题
2019-05-02
Qt中用QuaZip来压缩和解压缩文件
2019-05-02
第13章 Windows内存体系结构
2019-05-02
windows 和 linux 下c/c++内存分布(整理)
2019-05-02
Qt解析XML文件(QDomDocument)
2019-05-02
Qt图形视图框架
2019-05-02
Qt5中表格处理大数据量
2019-05-02
LeakCanary源码分析
2019-05-02
单例模式(Singleton)
2019-05-02
android Handler解析
2019-05-02
debian 有用的源
2019-05-02
Linux 安装 .NET Core 1.0 SDK
2019-05-02
我对卓越团队的理解
2019-05-02
linux epoll简介
2019-05-02