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

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

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

来源:力扣(LeetCode)

  • 思路
    求出每一个点的最大贡献。当节点是叶子节点的时候,最大贡献就是val的值,最大和的值为叶子节点值和最大和初始值的最大的一个考虑;当节点有子节点的时候,则节点最大贡献为节点val加上左右节点最大贡献的最大值,最大和为左右节点最大贡献加上该节点val值与全局最大和相比较的最大值。
  • c++
/*** 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 {private:int maxSum = INT_MIN;
public:int maxGain(TreeNode *node) {if (node == NULL) {return 0;}int maxLeft = max(maxGain(node->left), 0);int maxRight = max(maxGain(node->right), 0);int p = node->val + maxLeft + maxRight;maxSum = max(maxSum, p);return node->val + max(maxLeft, maxRight);}int maxPathSum(TreeNode* root) {maxGain(root);return maxSum;}
};
  • go
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func maxPathSum(root *TreeNode) int {maxSum := math.MinInt32var maxGain func(*TreeNode) intmaxGain = func(node *TreeNode) int {if node == nil {return 0}maxLeft := max(maxGain(node.Left), 0)maxRight := max(maxGain(node.Right), 0)p := node.Val + maxLeft + maxRightmaxSum = max(maxSum, p)return node.Val + max(maxLeft, maxRight)}maxGain(root)return maxSum
}func max(a, b int) int {if a > b {return a}return b
}
  • python
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution(object):def __init__(self):self.maxSum = float('-inf')def maxPathSum(self, root):""":type root: TreeNode:rtype: int"""def maxGain(self, node):if not node:return 0maxLeft = max(maxGain(self, node.left), 0)maxRight = max(maxGain(self, node.right), 0)p = node.val + maxLeft + maxRightself.maxSum = max(self.maxSum, p)return node.val + max(maxLeft, maxRight)maxGain(self, root)return self.maxSum

二叉树中的最大路径和相关推荐

  1. 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和

    Title 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: [1,2,3] 1 ...

  2. Leetcode 124.二叉树中的最大路径和

    124.二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...

  3. NC6 二叉树中的最大路径和

    这里写自定义目录标题 题目描述 思路 递归 题目描述 寻找二叉树中从任意节点开始的最大不重复路径和 示例: 输入:{1,2,3} 输出:6 原题链接:NC6 二叉树中的最大路径和 思路 拿到这道题第一 ...

  4. [LeetCode]124. 二叉树中的最大路径和(java实现)递归

    [LeetCode]124. 二叉树中的最大路径和(java实现)递归 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总 ...

  5. Java实现 LeetCode 124 二叉树中的最大路径和

    124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...

  6. 124. 二叉树中的最大路径和

    124. 二叉树中的最大路径和: 题目链接 :124. 二叉树中的最大路径和 题目: 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列.同一个节点在一条路径序列中 至多出 ...

  7. LeetCode实战:二叉树中的最大路径和

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a non ...

  8. 算法-二叉树中的最大路径和

    题目: 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列.同一个节点在一条路径序列中 至多出现一次 .该路径 至少包含一个 节点,且不一定经过根节点. 路径和 是路径中各 ...

  9. 二叉树中的最大路径和—leetcode124

    给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: [1,2,3] 1       ...

  10. leetcode-- 124. 二叉树中的最大路径和

    给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: [1,2,3]1/ \2 3输 ...

最新文章

  1. canvas笔记-canvas适应浏览器(填充整个页面)
  2. 字符串处理 —— 回文串相关 —— 回文串的判断
  3. C++ 集成和派生练习题解答
  4. HDFS : RemoteException Operation category READ is not supported in state standby.
  5. 甘肃省智慧教育云平台实名认证_“好分数”甘肃行,人工智能助力教育均衡
  6. 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
  7. linux下加载ISO镜像的方法
  8. spring集成shiro原理
  9. 聊聊小世界网络和癌症
  10. hdu4565(矩阵快速幂)
  11. avformat_seek_file函数介绍
  12. mysql中dml全称是什么_MySQL中的DML、DDL、DCL是什么意思
  13. 抛物线交点式公式_抛物线所有公式,抛物线是什么意思
  14. Tableau:与Python集成
  15. PSMN4R8-100BSE MOSFET管 N-CH 100V D2PAK
  16. Derek Wilson:三重缓冲,为什么我们爱它
  17. 判断当前浏览器是否为IE11
  18. “百度杯”CTF比赛 十月场 - 考眼力
  19. 特征选择(过滤法、包装法、嵌入法)
  20. 穿(string类的运用)

热门文章

  1. Spring MVC 登录拦截器
  2. Bash脚本教程之变量
  3. 微信小程序如何检测接收iBeacon信号
  4. 注意安全!XSS 和 XSRF
  5. 点a链接写邮件小技巧
  6. 去除IE10自带的清除按钮
  7. CentOS6.4 Install FTP
  8. 2019.7.16考试总结
  9. 【 jquery 】常用
  10. Cisco TrustSec(理解)