zoukankan      html  css  js  c++  java
  • Binary Tree Maximum Path Sum 自底向上求解(重重重重)

    题目:

    链接

    解答:

    自底向上求解。left_max right_max分别返回了左右子树的最大路径和,假设左右子树最大路径和小于0。那么返回零。 用这个最大路径和和根节点的值相加。来更新最大值,同一时候。 更新返回该树的最大路径值。

    代码:

     class Solution {
     public:
    	 int max = INT_MIN;
    	 int maxPathSum(TreeNode *root) {
    		 if (root == NULL)
    			 return 0;
    		 search(root);
    		 return max;
    	 }
    	 int search(TreeNode *root)
    	 {
    		 if (root == NULL)
    			 return 0;
    		 int left_max = search(root->left);
    		 int right_max = search(root->right);
    		 int sum = left_max + right_max + root->val;
    		 if (sum > max)
    			 max = sum;
    		 sum = left_max > right_max ? left_max + root->val : right_max + root->val;
    		 if (sum > 0)
    			 return sum;
    		 return 0;
    	 }
    
     };


  • 相关阅读:
    PHP开发APP接口(九)
    C#深入理解类型
    C#从委托、lambda表达式到linq总结
    C# ==和Equals()
    C# 泛型
    C# Reflection
    原声JS网络请求
    JavaScript预编译
    泛型初探
    C#内存分配
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7140755.html
Copyright © 2011-2022 走看看