Skip to content

Commit 394f6bb

Browse files
authored
Create subtree-of-another-tree.cpp
1 parent 3d14a88 commit 394f6bb

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

C++/subtree-of-another-tree.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Time: O(m * n), m is the number of nodes of s, n is the number of nodes of t
2+
// Space: O(h), h is the height of s
3+
4+
/**
5+
* Definition for a binary tree node.
6+
* struct TreeNode {
7+
* int val;
8+
* TreeNode *left;
9+
* TreeNode *right;
10+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
11+
* };
12+
*/
13+
class Solution {
14+
public:
15+
bool isSubtree(TreeNode* s, TreeNode* t) {
16+
return preOrderTraverse(s, t);
17+
}
18+
19+
private:
20+
bool preOrderTraverse(TreeNode *s, TreeNode *t) {
21+
return s && (isSame(s, t) ||
22+
preOrderTraverse(s->left, t) ||
23+
preOrderTraverse(s->right, t));
24+
}
25+
26+
bool isSame(TreeNode *x,TreeNode *y) {
27+
if (!x && !y) {
28+
return true;
29+
}
30+
if (!x || !y) {
31+
return false;
32+
}
33+
return x->val == y->val &&
34+
isSame(x->left, y->left) &&
35+
isSame(x->right, y->right);
36+
}
37+
};

0 commit comments

Comments
 (0)