程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode_question_124 Binary Tree Maximum Path Sum

leetcode_question_124 Binary Tree Maximum Path Sum

編輯:C++入門知識

Given a binary tree, find the maximum path sum.   The path may start and end at any node in the tree.   For example: Given the below binary tree,          1       / \      2   3 Return 6.

 
/** 
 * Definition for binary tree 
 * 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 &depthsum)  
    {  
        if(root == NULL)return 0;  
        if(root->left == NULL && root->right == NULL)  
        {depthsum = root->val; return root->val;}  
  
        int maxsum = 0xC0000000;  
        int left = 0, lefthalf = 0;  
        if(root->left)  
            left = maxpathsum(root->left, lefthalf);  
        else  
        {left = 0xC0000000; lefthalf = 0xC0000000;}  
  
        int right = 0, righthalf = 0;  
        if(root->right)  
            right = maxpathsum(root->right, righthalf);  
        else  
        {right = 0xC0000000; righthalf = 0xC0000000;}  
  
        maxsum = lefthalf + root->val + righthalf;  
        maxsum = left > maxsum ? left : maxsum;  
        maxsum = right > maxsum ? right : maxsum;  
        lefthalf = lefthalf > righthalf ? lefthalf : righthalf;  
        depthsum = lefthalf + root->val > root->val ? lefthalf+root->val : root->val;  
        maxsum = maxsum > depthsum ? maxsum : depthsum;  
        maxsum = maxsum > root->val ? maxsum : root->val;  
        return maxsum;  
    }  
    int maxPathSum(TreeNode *root) {  
        // Start typing your C/C++ solution below  
        // DO NOT write int main() function  
        if(root == NULL)return 0;  
        int maxsum = 0;  
        int depthsum = 0;  
        maxsum = maxpathsum(root, depthsum);  
        maxsum = depthsum > maxsum ? depthsum : maxsum;  
        return maxsum;  
    }  
};  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved