Skip to content

Commit 3fafc48

Browse files
committed
二叉树中的最大路径和
1 parent 4d25351 commit 3fafc48

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

binary_tree_maximum_path_sum.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# -*- coding: utf-8 -*-
2+
3+
class Solution:
4+
"""
5+
@param root: The root of binary tree.
6+
@return: An integer
7+
"""
8+
def maxPathSum(self, root):
9+
# write your code here
10+
if not root:
11+
return 0
12+
self.ret = -2147483648
13+
self._maxPathSum(root)
14+
return self.ret
15+
16+
def _maxPathSum(self, root):
17+
if not root:
18+
return 0
19+
left_sum = self._maxPathSum(root.left)
20+
right_sum = self._maxPathSum(root.right)
21+
'''
22+
从以下值中比较获取最大值与self.ret比较并更新
23+
- root.val
24+
- root.val + max_left_sum
25+
- root.val + max_right_sum
26+
- root.val + max_left_sum + max_right_sum
27+
这个值是当前包含该节点的最大路径和
28+
'''
29+
sub_max = max(root.val + left_sum, root.val + right_sum)
30+
sub_max = max(sub_max, root.val)
31+
sub_max = max(sub_max, root.val + left_sum + right_sum)
32+
if sub_max > self.ret:
33+
self.ret = sub_max
34+
'''
35+
返回值应当是以下值中比较获取最大,因为路径要向上延伸:
36+
- root.val
37+
- root.val + max_left_sum
38+
- root.val + max_right_sum
39+
'''
40+
return max(max(root.val + left_sum, root.val + right_sum), root.val)

0 commit comments

Comments
 (0)