Skip to content

Commit 2ac07b0

Browse files
committed
week 4 - maximum depth of binary tree
1 parent 5025bb0 commit 2ac07b0

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
2+
# - ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋ฉด์„œ ๊นŠ์ด ๊ณ„์‚ฐ
3+
# - ๊ฐ ๋…ธ๋“œ๋Š” ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ „์ฒด ๋…ธ๋“œ ์ˆ˜ n์— ๋น„๋ก€
4+
5+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(h)
6+
# - ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ์˜ ์ตœ๋Œ€ ๊นŠ์ด๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด(h)๋งŒํผ ์Œ“์ž„
7+
# - ๊ท ํ˜• ํŠธ๋ฆฌ๋ฉด O(log n), ์ผ์ž๋กœ ์น˜์šฐ์นœ ํŠธ๋ฆฌ(skewed tree)๋ฉด O(n)๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
8+
9+
10+
11+
# Definition for a binary tree node.
12+
# class TreeNode:
13+
# def __init__(self, val=0, left=None, right=None):
14+
# self.val = val
15+
# self.left = left
16+
# self.right = right
17+
class Solution:
18+
# ํ˜„์žฌ ๋…ธ๋“œ(cur_node)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด๋ฅผ ๊ตฌํ•˜๊ณ 
19+
# ๊ทธ ์ค‘ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜์„ ์‚ฌ์šฉ
20+
def maxDepth(self, root: Optional[TreeNode]) -> int:
21+
# depth๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๋ ค์˜จ ๊นŠ์ด๋ฅผ ์˜๋ฏธ
22+
def find_max_depth(cur_node, depth):
23+
# ๋” ๋‚ด๋ ค๊ฐˆ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด(leaf์˜ ์ž์‹) ์ง€๊ธˆ๊นŒ์ง€์˜ depth๊ฐ€ ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ๊นŠ์ด
24+
if not cur_node:
25+
return depth
26+
27+
# ์™ผ์ชฝ์œผ๋กœ ํ•œ ๋‹จ๊ณ„ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๊นŠ์ด๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ํƒ์ƒ‰
28+
left_depth = find_max_depth(cur_node.left, depth + 1)
29+
# ์˜ค๋ฅธ์ชฝ๋„ ๋™์ผํ•˜๊ฒŒ ํƒ์ƒ‰
30+
right_depth = find_max_depth(cur_node.right, depth + 1)
31+
32+
# ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์ค‘ ๋” ๊นŠ์€ ์ชฝ์ด ์ด ๋…ธ๋“œ ๊ธฐ์ค€ ์ตœ๋Œ€ ๊นŠ์ด
33+
return max(left_depth, right_depth)
34+
35+
# ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ ๊นŠ์ด๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
36+
max_depth = find_max_depth(root, 0)
37+
38+
return max_depth

0 commit comments

Comments
ย (0)