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