zoukankan      html  css  js  c++  java
  • leetcode 124. 二叉树中的最大路径和

     1 class Solution {
     2 private:
     3     int maxSum = INT_MIN;
     4 
     5 public:
     6     int maxGain(TreeNode* node) {
     7         if (node == nullptr) {
     8             return 0;
     9         }
    10         
    11         // 递归计算左右子节点的最大贡献值
    12         // 只有在最大贡献值大于 0 时,才会选取对应子节点
    13         int leftGain = max(maxGain(node->left), 0);
    14         int rightGain = max(maxGain(node->right), 0);
    15 
    16         // 节点的最大路径和取决于该节点的值与该节点的左右子节点的最大贡献值
    17         int priceNewpath = node->val + leftGain + rightGain;
    18 
    19         // 更新答案
    20         maxSum = max(maxSum, priceNewpath);
    21 
    22         // 返回节点的最大贡献值
    23         return node->val + max(leftGain, rightGain);
    24     }
    25 
    26     int maxPathSum(TreeNode* root) {
    27         maxGain(root);
    28         return maxSum;
    29     }
    30 };
    每天进步一点点~
  • 相关阅读:
    第63天python学习异常
    第62天python 学习TCP三次握手四次挥手详解
    文件操作
    内置函数
    函数递归
    函数补充
    函数
    购物车程序作业
    集合内置函数
    字典三级菜单
  • 原文地址:https://www.cnblogs.com/libin123/p/14604473.html
Copyright © 2011-2022 走看看