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

    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.

    思路:这一题同样采用的bottom up的方式。递归调用help函数。如果传入的根节点为空,直接返回0.设置val为左右子树到当前根节点的最大值,递归求左右子树的路径之和,得到左右子树到当前节点的最大路径和,如果值大于result,就更新result。最终返回经过当前节点的最大路径之和,请注意只能加上左右子树的一支,否则就可能会出现重复加的情况。

    1. /**
       * 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 result;
      public:
          int help(TreeNode *root){
              if(!root)
                  return 0;
              int val =root->val;
              int left=help(root->left);
              int right=help(root->right);
              if(left>0)
                  val+=left;
              if(right>0)
                  val+=right;
              result=max(result,val);
              return max(root->val,max(root->val+left,root->val+right));
          }
          int maxPathSum(TreeNode* root) {
              if(!root)
                  return 0;
              result=INT_MIN;
              help(root);
              return result;
          }
      };
      
       

  • 相关阅读:
    myeclipse关掉references
    eclipse/myeclipse SVN资源库URL中文乱码问题解决办法
    获取登录用户ip
    MySQL高级 之 explain执行计划详解(转)
    代码部署工具walle(一)
    mongodb备份策略
    nginx报错整理
    记一次java程序占用cpu超高排查
    HDFS恢复误删操作的方法
    有趣的工具
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5043379.html
Copyright © 2011-2022 走看看