博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Binary Tree Maximum Path Sum
阅读量:6214 次
发布时间:2019-06-21

本文共 1990 字,大约阅读时间需要 6 分钟。

LeetCode: 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.

地址:

算法:用递归来解决。首先,最大的路径和出现在以下三种情况:1)出现在左子树中;2)出现在右子树;3)经过根节点,在这种情况下,相当与左边从根节点到叶节点的最大路径加上右边从根节点到叶节点的最大路径。

对于第三种情况也可以用递归来解决。代码:

1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     int maxPathSum(TreeNode *root) {13         if(!root){14             return INVALID;15         }16         int left = maxPathSum(root->left);17         int right = maxPathSum(root->right);18         int mid = root->val;19         int mid_left =maxLoadSum(root->left);20         if(mid_left > 0){21             mid += mid_left;22         }23         int mid_right = maxLoadSum(root->right);24         if(mid_right > 0){25             mid += mid_right;26         }27         if(left != INVALID && left > mid){28             mid = left;29         }30         if(right != INVALID && right > mid){31             mid = right;32         }33         return mid;34     }35     int maxLoadSum(TreeNode *root){36         if(flag.find(root) != flag.end()){37             return flag[root];38         }39         if(!root){40             flag[root] = -1;41             return -1;42         }43         int sum = root->val;44         int left = maxLoadSum(root->left);45         int right = maxLoadSum(root->right);46         if (left > right){47             right = left;48         }49         if(right > 0){50             sum += right;51         }52         flag[root] = sum;53         return sum;54     }55     static const int INVALID = 0x7FFFFFFF;56     map
flag;57 };

 

posted on
2014-08-25 21:27 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/boostable/p/leetcode_binary_tree_maximum_path_sum.html

你可能感兴趣的文章
计算机网络--网络协议分析技术
查看>>
JAVA JDBC 调用 oracle 函数的时候,注意格式,{}, 调用关键字 call 勿必要小写。...
查看>>
iterrows() 函数对dataframe进行遍历
查看>>
11月21日
查看>>
(转)回车与换行的区别
查看>>
《自控力》读书笔记
查看>>
Linux 日常命令
查看>>
SHELL脚本 中日期的使用以及时间变量的使用
查看>>
基于Python的TCP阻塞式echo服务器
查看>>
JAVA Day3
查看>>
《深入理解计算机系统》课本第七章自学笔记——20135203齐岳
查看>>
C#的一个异常
查看>>
Oracle dba 日常使用脚本【不断更新】
查看>>
用SelectSingleNode()方法查找xml节点一直返回null
查看>>
微信小程序跨页面获取数据示例
查看>>
laravel模型中设计使用单选按钮的方法:
查看>>
关于快速幂……
查看>>
一句话解释回调函数
查看>>
smarty string_format用法 取小数点后2位
查看>>
ios 清除缓存文件
查看>>