zoukankan      html  css  js  c++  java
  • Binary Tree Maximum Path Sum

    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 getMaxSum(TreeNode *root,int &maxSum)
        {
            if(root==NULL)
                return 0;
            int left=getMaxSum(root->left,maxSum);
            int right=getMaxSum(root->right,maxSum);
            int CurSum=root->val;
            if(left>0)
                CurSum+=left;
            if(right>0)
                CurSum+=right;
            maxSum=max(maxSum,CurSum);
            return root->val+max(max(0,left),right);
        }
        int maxPathSum(TreeNode *root) {
            if(root==NULL)
                return 0;
            int maxSum=INT_MIN;
            getMaxSum(root,maxSum);
            return maxSum;
        }
    };
  • 相关阅读:
    游戏编程模式之原型模式
    游戏编程模式之观察者模式
    游戏编程模式之享元模式
    游戏编程模式之命令模式
    数据库系统概论(二):关系数据库
    数据库系统概论(一):绪论
    [Unity] Unity Cursor 设置和API解析
    HDU 5492 Find a path
    HDU 1317 XYZZY
    Codeforces 508D Tanya and Password
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3812131.html
Copyright © 2011-2022 走看看