Skip to content

Commit c423d1b

Browse files
committed
same tree solution
1 parent 931bcdf commit c423d1b

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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+
// ์ข…๋ฃŒ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๊ณ  ์žฌ๊ท€๋กœ ๋Œ๋ ค์„œ ํŠธ๋ฆฌ ์ „์ฒด๋ฅผ ์ ๊ฒ€ - DFS
17+
func isSameTree(_ p: TreeNode?, _ q: TreeNode?) -> Bool {
18+
// ๋‘˜ ๋‹ค nil์ด๋ฉด ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ - TreeNode๋Š” Equatable์„ ์ฑ„ํƒํ•˜์ง€ ์•Š์•„์„œ, p == q์™€ ๊ฐ™์€ ์ง์ ‘ ๋น„๊ต๋Š” ๋ถˆ๊ฐ€๋Šฅ
19+
if p == nil && q == nil { return true }
20+
// ๋‘˜ ๋‹ค nil์ธ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ํ•œ ์ชฝ์ด๋ผ๋„ nil์ด๋ฉด ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ false
21+
guard let p, let q else { return false }
22+
// ๊ฐ’์ด ๊ฐ™์ง€ ์•Š์œผ๋ฉด false
23+
guard p.val == q.val else { return false }
24+
25+
// ๋‘˜ ๋‹ค nil์ด ์•„๋‹ˆ๊ณ , ๊ฐ’์ด ๊ฐ™์Œ๊นŒ์ง€ ๊ฒ€์ฆํ•œ ์ƒํƒœ
26+
if p.isLeafNode && q.isLeafNode {
27+
// ์ž์‹์ด ์—†๋‹ค๋ฉด true ๋ฐ˜ํ™˜
28+
return true
29+
} else {
30+
// ์ž์‹์ด ์žˆ๋‹ค๋ฉด ์ž์‹๋“ค์— ๋Œ€ํ•ด ๊ฐ๊ฐ ๊ฒ€์‚ฌ ์ˆ˜ํ–‰
31+
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
32+
}
33+
}
34+
}
35+
36+
extension TreeNode {
37+
var isLeafNode: Bool {
38+
left == nil && right == nil
39+
}
40+
}

0 commit comments

Comments
ย (0)