File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
binary-tree-maximum-path-sum Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ # class TreeNode:
3
+ # def __init__(self, val=0, left=None, right=None):
4
+ # self.val = val
5
+ # self.left = left
6
+ # self.right = right
7
+ class Solution :
8
+ def maxPathSum (self , root : Optional [TreeNode ]) -> int :
9
+
10
+ # DFS + ๋ถํ ์ ๋ณตํ DP
11
+ # ์๊ฐ๋ณต์ก๋ O(n), ๊ณต๊ฐ๋ณต์ก๋ O(n)
12
+ self .answer = float ('-inf' ) # ์ต์ ๊ฐ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ธํ
(dfsํจ์์์๋ ์ฐ์ผ ์ ์๊ฒ ์ธ์คํด์ค๋ณ์ ์ ์ธํด์ ์ ์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉ)
13
+
14
+ def dfs (node ):
15
+ if not node :
16
+ return 0
17
+
18
+ # ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ์ต๋ํฉ(์์๋ผ๋ฉด ๋ฒ๋ฆฌ๊ณ 0 ๊ฐ์ ธ๊ฐ๊ธฐ)
19
+ left = max (0 ,dfs (node .left ))
20
+ right = max (0 ,dfs (node .right ))
21
+
22
+ # ํ์ฌ ๋
ธ๋๋ฅผ ํฌํจํ๋ ์ต๋ํฉ์ผ๋ก answer ์
๋ฐ์ดํธ
23
+ self .answer = max (self .answer , left + right + node .val )
24
+
25
+ # ์ผ์ชฝ,์ค๋ฅธ์ชฝ ์ค ์ต๋๊ฐ ์ ํ(ํ๋ฐฉํฅ์ด๋๊น)ํด์ ๋ถ๋ชจ์๊ฒ ๋ฆฌํด
26
+ return max (left , right ) + node .val
27
+
28
+
29
+ dfs (root )
30
+ return self .answer
You canโt perform that action at this time.
0 commit comments