[leetcode]Binary Tree Maximum Path Sum
2014-01-23 00:39
323 查看
原题目:
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,
Return
看似简单的一道题目。
首先,要弄清题意,明确题目中的"path"的起点和终点可以是树中的任意节点,这里称之为path1
这与我之前做过的一道题目的path定义不同。我之前做的题目的path定义为:起点是根节点,终点是该跟节点的后辈的path,这里称之为path2
比如拿样例来看,最大的path1是:
2 -- 1 -- 3
而最大的path2 只能是:
1 -- 3
因为 2 和 3 并不是祖先和后辈的关系。
思考算法时,要区分这两种path的区别:
如果要求计算path2,相信大家都会写,一个简单的dfs就可以搞定:
如果是要求计算path1,则需要再上面的代码基础上,做一点小小的修改。
因为真正合法的路径,是可以由 自身 + 左子节点的path2 + 右子节点的path2 构成。
换句话说,为了使得path1最大,如果左子节点path2大于0,则加入。右子节点path2大于0,也加入。
因此需要设置一个全局变量result,实时更新最大path1值:
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.
看似简单的一道题目。
首先,要弄清题意,明确题目中的"path"的起点和终点可以是树中的任意节点,这里称之为path1
这与我之前做过的一道题目的path定义不同。我之前做的题目的path定义为:起点是根节点,终点是该跟节点的后辈的path,这里称之为path2
比如拿样例来看,最大的path1是:
2 -- 1 -- 3
而最大的path2 只能是:
1 -- 3
因为 2 和 3 并不是祖先和后辈的关系。
思考算法时,要区分这两种path的区别:
如果要求计算path2,相信大家都会写,一个简单的dfs就可以搞定:
如果是要求计算path1,则需要再上面的代码基础上,做一点小小的修改。
因为真正合法的路径,是可以由 自身 + 左子节点的path2 + 右子节点的path2 构成。
换句话说,为了使得path1最大,如果左子节点path2大于0,则加入。右子节点path2大于0,也加入。
因此需要设置一个全局变量result,实时更新最大path1值:
相关文章推荐
- LEETCODE: Binary Tree Maximum Path Sum
- 【Leetcode】Binary Tree Maximum Path Sum
- LeetCode | Binary Tree Maximum Path Sum
- [LeetCode]Binary Tree Maximum Path Sum
- leetcode- Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- Leetcode:Binary Tree Maximum Path Sum
- [leetcode] Binary Tree Maximum Path Sum
- Leetcode-124: Binary Tree Maximum Path Sum
- [leetcode]Binary Tree Maximum Path Sum
- [Leetcode] Binary tree maximum path sum求二叉树最大路径和
- LeetCode(124) Binary Tree Maximum Path Sum
- LeetCode(124) Binary Tree Maximum Path Sum 二叉树的最大路径和 (如何递归?)
- LeetCode 28 Binary Tree Maximum Path Sum
- [LeetCode 124] Binary Tree Maximum Path Sum (DFS/二叉树)
- LeetCode-Binary Tree Maximum Path Sum
- Leetcode之Binary Tree Maximum Path Sum
- LeetCode 124: Binary Tree Maximum Path Sum
- [LeetCode] Binary Tree Maximum Path Sum