zoukankan      html  css  js  c++  java
  • 【hard】124. Binary Tree Maximum Path Sum

    Given a non-empty binary tree, find the maximum path sum.

    For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.

    Example 1:

    Input: [1,2,3]
    
           1
          / 
         2   3
    
    Output: 6
    

    Example 2:

    Input: [-10,9,20,null,null,15,7]
    
       -10
       / 
      9  20
        /  
       15   7
    
    Output: 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 {
    private:
        int solution(TreeNode* root, int& best){  // my own solution
            if (!root) return 0;
            int left_sum = root->val + solution(root->left, best);
            int right_sum = root->val + solution(root->right, best);
            int curve_sum = left_sum + right_sum - root->val;
            best = max({best, left_sum, right_sum, curve_sum, root->val});
            
            return max({left_sum, right_sum, root -> val});
        }
        
    public:
        int maxPathSum(TreeNode* root) {  // it is the original function
            int best = INT_MIN;
            int eval = solution(root, best);
            return max(best, eval);
        }
        
    };
  • 相关阅读:
    ie条件注释
    css3之图片一闪而过特效
    css帧动画之图片发亮
    css3动画
    解决ie6不兼容透明图片
    jquery实现拖拽的效果
    原生js实现拖拽弹框的效果
    C++学习笔记十之连接数据库
    C++学习笔记九之异常处理
    C++学习笔记八之STL内置算法
  • 原文地址:https://www.cnblogs.com/sherry-yang/p/11421704.html
Copyright © 2011-2022 走看看