File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 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 )
You can’t perform that action at this time.
0 commit comments