LeetCode(124) Binary Tree Maximum Path Sum
2015-12-27 16:20
381 查看
题目
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.
分析
给定一颗二叉树,求其最大路径和。对于二叉树,算法大多可以选择递归解决,此题也不例外。思路参考
如果只是一个节点,那么当然就是这个节点的值了.
如果这个作为root,那么最长路应该就是..
F(left) + F(right) + val...当然如果left,或者right<0就不用加了的= =
从下往上递归遍历...
如果不这个不是root,那么就不能把left和right加起来了...因为只是一条路...
AC代码
/** * 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 maxVal = INT_MIN; int maxPathSum(TreeNode* root) { if (root == NULL) return 0; maxSum(root); return maxVal; } /*递归函数*/ int maxSum(TreeNode *root) { if (root == NULL) return 0; /*求以root为根的当前子树的最大路径和*/ int curVal = root->val; int lmaxSum = maxSum(root->left), rmaxSum = maxSum(root->right); if (lmaxSum > 0) curVal += lmaxSum; if (rmaxSum > 0) curVal += rmaxSum; if (curVal > maxVal) maxVal = curVal; /*返回以当前root为根的子树的最大路径和*/ return max(root->val, max(root->val + lmaxSum, root->val + rmaxSum)); } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解