Skip to content

Commit c19b630

Browse files
authored
Merge pull request #607 from Sunjae95/main
[선재] WEEK 15 Solutions
2 parents 010dc6d + bb99027 commit c19b630

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

subtree-of-another-tree/sunjae95.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @description
3+
* root tree의 각 노드들에서 subRoot의 root와 같으면 preOrder를 통해 일치하는지 확인하는 로직
4+
*
5+
* n = count of root node
6+
* time complexity: O(n^2)
7+
* space complexity: O(n^2)
8+
*/
9+
var isSubtree = function (root, subRoot) {
10+
const findTree = (tree, target) => {
11+
if (!tree && !target) return true;
12+
if (!tree || !target || tree.val !== target.val) return false;
13+
14+
if (!findTree(tree.left, target.left)) return false;
15+
if (!findTree(tree.right, target.right)) return false;
16+
17+
return true;
18+
};
19+
20+
const preOrder = (tree) => {
21+
if (!tree) return false;
22+
23+
if (tree.val === subRoot.val) {
24+
if (findTree(tree, subRoot)) return true;
25+
}
26+
if (preOrder(tree.left)) return true;
27+
if (preOrder(tree.right)) return true;
28+
29+
return false;
30+
};
31+
32+
return preOrder(root);
33+
};

0 commit comments

Comments
 (0)