Skip to content

Commit 4fa44f0

Browse files
same tree
1 parent 5a0b4ee commit 4fa44f0

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

same-tree/jaejeong1.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
// Definition for a binary tree node.
3+
class TreeNode {
4+
int val;
5+
TreeNode left;
6+
TreeNode right;
7+
TreeNode() {}
8+
TreeNode(int val) { this.val = val; }
9+
TreeNode(int val, TreeNode left, TreeNode right) {
10+
this.val = val;
11+
this.left = left;
12+
this.right = right;
13+
}
14+
}
15+
16+
class Solution {
17+
18+
public boolean isSameTree(TreeNode p, TreeNode q) {
19+
// 풀이: 재귀로 left와 right를 비교하면서 같은지 확인한다.
20+
// TC: O(N)
21+
// SC: O(N)
22+
return dfs(p, q);
23+
}
24+
25+
private boolean dfs(TreeNode p, TreeNode q) {
26+
if (p == null || q == null) {
27+
return p == q; // 둘 다 null이면 true, 하나만 null이면 false
28+
}
29+
30+
if (p.val != q.val) { // 값이 다르면 false
31+
return false;
32+
}
33+
34+
if (p.left != null && !dfs(p.left, q.left)) { // 둘 중 하나만 null인 케이스는 위에서 걸러져, p.left 하나만 null 여부를 체크하면 npe 방지할 수 있다
35+
return false; // 둘다 null이 아닐때만 dfs 값비교를 하고, 결과가 false 라면 false 반환하고 중단
36+
}
37+
38+
if (p.right != null && !dfs(p.right, q.right)) {
39+
return false;
40+
}
41+
42+
return true; // 값이 다른 케이스가 없으면 true 반환
43+
}
44+
}

0 commit comments

Comments
 (0)