File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You canโt perform that action at this time.
0 commit comments