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