File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-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
+ * val: number
5
+ * left: TreeNode | null
6
+ * right: TreeNode | null
7
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8
+ * this.val = (val===undefined ? 0 : val)
9
+ * this.left = (left===undefined ? null : left)
10
+ * this.right = (right===undefined ? null : right)
11
+ * }
12
+ * }
13
+ */
14
+ /**
15
+ * ํธ๋ฆฌ ๋ด์ ๋์ผํ ์๋ธํธ๋ฆฌ๊ฐ ์๋์ง ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ
16
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
17
+ * - ์๊ฐ ๋ณต์ก๋: O(nรm) - n(root ๋
ธ๋ ์), m(subRoot ๋
ธ๋ ์)
18
+ * - ๊ณต๊ฐ ๋ณต์ก๋: O(n+m) - ์ฒซ ๋ฒ์งธ isSubtree()์ ํธ์ถ ์คํ์ ๊น์ด์ isSameTree()์ ํธ์ถ ์คํ์ ๊น์ด๋ฅผ ๋ํ ๊ฒ
19
+ * @param root
20
+ * @param subRoot
21
+ */
22
+ function isSubtree ( root : TreeNode | null , subRoot : TreeNode | null ) : boolean {
23
+ if ( ! subRoot ) return true
24
+ if ( ! root ) return false
25
+
26
+ // ์ด์ ์ ํ์ดํ isSameTree๋ฅผ ์ถ๊ฐ
27
+ function isSameTree ( p : TreeNode | null , q : TreeNode | null ) {
28
+ if ( ! p || ! q ) {
29
+ return p === q ;
30
+ }
31
+ return p . val === q . val && isSameTree ( p . left , q . left ) && isSameTree ( p . right , q . right )
32
+ }
33
+
34
+ if ( isSameTree ( root , subRoot ) ) return true
35
+ return isSubtree ( root . left , subRoot ) || isSubtree ( root . right , subRoot )
36
+ }
37
+
You canโt perform that action at this time.
0 commit comments