• 124. Binary Tree Maximum Path Sum *HARD* -- 二叉树中节点和最大的路径的节点和


    Given a 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 does not need to go through the root.

    For example:
    Given the below binary tree,

           1
          / 
         2   3
    

    Return 6.

    /**
     * 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 getMax(TreeNode* root, int &ans)
        {
            if(!root)
                return 0;
            int leftMax = getMax(root->left, ans), rightMax = getMax(root->right, ans), Max = max(leftMax, rightMax);
            int curMax = ((leftMax > 0) ? leftMax : 0) + ((rightMax > 0) ? rightMax : 0) + root->val;
            if(curMax > ans)
                ans = curMax;
            if(Max <= 0)
                return root->val;
            return Max + root->val;
        }
        int maxPathSum(TreeNode* root) {
            int ans = INT_MIN;
            getMax(root, ans);
            return ans;
        }
    };

    分别求左右子树的最大节点和,若为负,则忽略,若为正,则加上本身的节点值。

  • 相关阅读:
    linux下ssh使用
    CentOS 5.3使用minicom
    CentOS mysql
    CentOS下使用vsftpd
    Python处理json字符串转化为字典
    自己写的C#扫雷游戏(附源码)
    新伙伴
    成就了儿时一个简单的想法
    Sun VirtualBox vs. VMware Workstation
    DVDLogger源码——SQLite简单应用
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/5416168.html
Copyright © 2020-2023  润新知