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
+ // 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
+ };
You can’t perform that action at this time.
0 commit comments