• leetcode124 二叉树中的最大路径和(Hard)


    题目来源:leetcode124 二叉树中的最大路径和

    题目描述:

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

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

    示例 1:

    输入: [1,2,3]

       1
      / 
     2   3
    

    输出: 6

    示例 2:

    输入: [-10,9,20,null,null,15,7]

    输出: 42

    解题思路:

    递归

    /**
     * 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 {
    public:
        int maxPathSum(TreeNode* root) {
            int res=INT_MIN;
            helper(root,res);
            return res;
        }
        //表示以root为结束结点的最大值
        int helper(TreeNode *root,int &res){
            if(!root) return 0;
            // 递归计算左右子节点的最大贡献值,只有大于0时才会选择
            int left=max(helper(root->left,res),0);
            int right=max(helper(root->right,res),0);
            res=max(res,root->val+left+right);//更新结果
            return max(left,right)+root->val; //以当前结点为终点
    
        }
    };
    
  • 相关阅读:
    AUTOSAR-文档阅读
    前端 html
    http协议
    python格式化输出
    IO模型
    协程函数
    伟大的GIL
    苑之歌(进程,线程)
    python之模块导入和包
    任性计算器
  • 原文地址:https://www.cnblogs.com/yjcoding/p/13445861.html
Copyright © 2020-2023  润新知