File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 문제 설명
3
+ * - 두 개의 이진트리 중, subTree가 존재하는지 확인하는 문제
4
+ *
5
+ * 아이디어
6
+ * 1) DFS + isSameTree 체크
7
+ */
8
+ class TreeNode {
9
+ val : number ;
10
+ left : TreeNode | null ;
11
+ right : TreeNode | null ;
12
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
13
+ this . val = val === undefined ? 0 : val ;
14
+ this . left = left === undefined ? null : left ;
15
+ this . right = right === undefined ? null : right ;
16
+ }
17
+ }
18
+
19
+ function isSameTree ( tree1 : TreeNode | null , tree2 : TreeNode | null ) {
20
+ if ( ( tree1 && ! tree2 ) || ( ! tree1 && tree2 ) ) return false ;
21
+ if ( tree1 === null && tree2 === null ) return true ;
22
+ if ( tree1 ?. val !== tree2 ?. val ) return false ;
23
+ return (
24
+ isSameTree ( tree1 ?. left ?? null , tree2 ?. left ?? null ) &&
25
+ isSameTree ( tree1 ?. right ?? null , tree2 ?. right ?? null )
26
+ ) ;
27
+ }
28
+
29
+ function isSubtree ( root : TreeNode | null , subRoot : TreeNode | null ) : boolean {
30
+ if ( ! root ) return false ;
31
+ if ( isSameTree ( root , subRoot ) ) return true ;
32
+ return isSubtree ( root . left , subRoot ) || isSubtree ( root . right , subRoot ) ;
33
+ }
You can’t perform that action at this time.
0 commit comments