Skip to content

Commit c1d33a0

Browse files
committed
Solved problem 572 : Subtree Of Another Tree
1 parent f3b485d commit c1d33a0

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Problem: 572
3+
* Name: Subtree Of Another Tree
4+
* Difficulty: Easy
5+
* Topic: Binary Trees
6+
* Link: https://leetcode.com/problems/subtree-of-another-tree/
7+
*/
8+
9+
#include <bits/stdc++.h>
10+
using namespace std;
11+
12+
// Tree Node Implementation
13+
struct TreeNode {
14+
int val;
15+
TreeNode *left;
16+
TreeNode *right;
17+
TreeNode() : val(0), left(nullptr), right(nullptr) {}
18+
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
19+
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
20+
};
21+
22+
// Recursive Approach
23+
// Time Complexity: O(n²)
24+
// Space Complexity: O(1)
25+
bool isSameTree(TreeNode* p, TreeNode* q);
26+
bool isSubtree(TreeNode* root, TreeNode* subRoot) {
27+
if (root == subRoot) {return true;}
28+
if (root == nullptr || subRoot == nullptr) {return false;}
29+
return isSameTree(root, subRoot) ||
30+
isSubtree(root->left, subRoot) ||
31+
isSubtree(root->right, subRoot);
32+
}
33+
// Auxiliar function from problem "SameTree"
34+
bool isSameTree(TreeNode* p, TreeNode* q) {
35+
if (p == q){ return true;}
36+
else if (p == NULL || q == NULL){ return false;}
37+
else if (p->val != q->val) {return false;}
38+
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
39+
}

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
### Problems Solved
1818

19-
| Total | 39 |
19+
| Total | 40 |
2020
|:---:|:---:|
2121

2222
#### Search By Topic
@@ -26,7 +26,7 @@
2626
| Arrays & Hashing | 7 |
2727
| Backtracking | 0 |
2828
| Binary Search | 2 |
29-
| Binary Trees | 8 |
29+
| Binary Trees | 9 |
3030
| Bit Manipulation | 6 |
3131
| Dynamic Programming 1D | 1 |
3232
| Dynamic Programming 2D | 0 |
@@ -46,7 +46,7 @@
4646

4747
| Difficulty | Number |
4848
|:---|---:|
49-
| Easy | 38 |
49+
| Easy | 39 |
5050
| Medium | 1 |
5151
| Hard | 0 |
5252

0 commit comments

Comments
 (0)