Skip to content

Commit a7580d5

Browse files
authored
Merge pull request #2342 from radiantchoi/main
[radiantchoi] WEEK 15 Solutions
2 parents f36099f + 8703449 commit a7580d5

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Definition for a binary tree node.
2+
public class TreeNode {
3+
public var val: Int
4+
public var left: TreeNode?
5+
public var right: TreeNode?
6+
public init() { self.val = 0; self.left = nil; self.right = nil; }
7+
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
8+
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
9+
self.val = val
10+
self.left = left
11+
self.right = right
12+
}
13+
}
14+
15+
class Solution {
16+
func isSubtree(_ root: TreeNode?, _ subRoot: TreeNode?) -> Bool {
17+
// ์›์†Œ๊ฐ€ 0๊ฐœ์ธ ํŠธ๋ฆฌ๋Š” ๋ชจ๋“  ํŠธ๋ฆฌ์˜ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ๊ฐ„์ฃผ - ๋ฌธ์ œ ๋‚ด์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด
18+
if subRoot == nil { return true }
19+
20+
// ์ด์™ธ์˜ ๊ฒฝ์šฐ root๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•จ
21+
guard let root else { return false }
22+
23+
// ๋‘ ํŠธ๋ฆฌ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ true ๋ฐ˜ํ™˜ - ์ž๊ธฐ ์ž์‹ ์€ ์ž์‹ ์˜ ์„œ๋ธŒํŠธ๋ฆฌ
24+
if root == subRoot { return true }
25+
26+
// ์ด์™ธ์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ ์ž์‹, ์˜ค๋ฅธ์ชฝ ์ž์‹์— ๋Œ€ํ•ด ์„œ๋ธŒํŠธ๋ฆฌ ๊ฒ€์‚ฌ ์ˆ˜ํ–‰
27+
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
28+
}
29+
}
30+
31+
// Equatable ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋„๋ก ์ •์˜ํ•จ์œผ๋กœ์จ, == ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ
32+
extension TreeNode: Equatable {
33+
public static func ==(lhs: TreeNode, rhs: TreeNode) -> Bool {
34+
// Swift ์ปดํŒŒ์ผ๋Ÿฌ ํŠน์„ฑ์ƒ, ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋น„๊ตํ•  ๋•Œ === ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด O(1) ์‹œ๊ฐ„ ๋‚ด์— ํƒ์ƒ‰ ๊ฐ€๋Šฅ
35+
// ๋ฌผ๋ก  ์ฐธ์กฐ ํƒ€์ž…์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, TreeNode๋Š” class์—ฌ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค
36+
if lhs === rhs { return true }
37+
38+
// ๋™์ผํ•œ ๋…ธ๋“œ์˜ ์กฐ๊ฑด์€, ๊ฐ’์ด ๊ฐ™๊ณ  ์™ผ์ชฝ ์ž์‹์ด ๊ฐ™์œผ๋ฉฐ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด ๊ฐ™์€ ๊ฒƒ
39+
return lhs.val == rhs.val && lhs.left == rhs.left && lhs.right == rhs.right
40+
}
41+
}

0 commit comments

Comments
ย (0)