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