Skip to content

Commit ae4dfa8

Browse files
committed
solve problem
1 parent 3bb95fc commit ae4dfa8

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
// Time O(M * N)
3+
// Space O(N)
4+
func isSubtree(_ root: TreeNode?, _ subRoot: TreeNode?) -> Bool {
5+
if let root = root, let subRoot = subRoot {
6+
if root.val == subRoot.val {
7+
return dfs(root.left, subRoot: subRoot.left) && dfs(root.right, subRoot: subRoot.right) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
8+
}
9+
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
10+
}
11+
12+
return false
13+
}
14+
15+
private func dfs(_ root: TreeNode?, subRoot: TreeNode?) -> Bool {
16+
if root == nil && subRoot == nil {
17+
return true
18+
}
19+
20+
if let root = root, let subRoot = subRoot {
21+
if root.val == subRoot.val {
22+
return dfs(root.left, subRoot: subRoot.left) && dfs(root.right, subRoot: subRoot.right)
23+
}
24+
}
25+
26+
return false
27+
}
28+
}
29+

0 commit comments

Comments
 (0)