zoukankan      html  css  js  c++  java
  • 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; //以当前结点为终点
    
        }
    };
    
  • 相关阅读:
    xp 安装 win7 64
    局域网内传输文件速度慢
    安全和共享设置
    vs2005无法启动
    dos快速通道
    xp 共享 guest
    Java菜题
    Java序列化总结(最全)
    Bitset改进你的程序质量
    Java反射方法总结
  • 原文地址:https://www.cnblogs.com/yjcoding/p/13445861.html
Copyright © 2011-2022 走看看