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