LeetCode Binary Tree Maximum Path Sum 二叉树最大路径和(DFS)
2015-07-29 09:47
411 查看
题意:给一棵二叉树,要求找出任意两个节点(也可以只是一个点)的最大路径和,至少1个节点,返回路径和。(点权有负的。)
思路:DFS解决,返回值是,经过从某后代节点上来到当前节点且路径和最大的值。要注意如果子树传来的如果是负值,是可以同时丢弃的,但至少要将当前节点的val更新答案。
AC代码
思路:DFS解决,返回值是,经过从某后代节点上来到当前节点且路径和最大的值。要注意如果子树传来的如果是负值,是可以同时丢弃的,但至少要将当前节点的val更新答案。
/** * 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 maxPathSum(TreeNode* root) { ans=-2147483648; DFS(root); return ans; } private: int ans; int DFS(TreeNode* t) { if(!t) return 0; int a=max(0,DFS(t->left)); //小于0的直接丢弃 int b=max(0,DFS(t->right)); ans=max(ans, a+b+t->val); //更新,必须以当前节点为中转 return max(a, b)+t->val; //只能返回一条到叶子的路径 } };
AC代码
相关文章推荐
- HDU 5317 RGCDQ
- HDU 2571 命运
- 优化数据页面(22)——n:n的数据关系
- HDU1828 Picture 周长并 线扫描
- WPF显示常用的几个显示文字控件TextBox, TextBlock, Lable
- 秋暮遣怀
- SQL Server里的闩锁介绍
- 从AD域获取用户AD信息
- 极客标签前端特效资源精品大荟萃#002
- Google Interview - Check String Order
- 10个加速Table Views开发的Tips
- C#比较对象的相等性
- Step into Kotlin - 22 - Xml
- Java中Error和Exception的区别
- php正则表达式中的非贪婪模式匹配的使用
- hdu 3529 炸弹人
- Study JQuery《源码分析core-整体架构》
- 沁园春.长沙
- C#比较对象的相等性
- SQL Server里的自旋锁介绍