Skip to content

Commit 75eb62a

Browse files
p115
1 parent 7cc9dc1 commit 75eb62a

File tree

5 files changed

+86
-3
lines changed

5 files changed

+86
-3
lines changed

AllQuestions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1844,7 +1844,7 @@ maintaining the relative order of the delimiters. For example, given
18441844
Follow-up: Does your solution work for the following cases: "hello/world:here/",
18451845
"hello//world:here"
18461846

1847-
## Problem-115:waxing_crescent_moon:
1847+
## [Problem-115](src/main/java/in/ashwanik/dcp/problems/p91_120/p115):sunny:
18481848

18491849

18501850
> This problem was asked by Google.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ Solutions to the coding problems from [Daily coding problem](https://dailycoding
33

44
## For all questions, see [here](AllQuestions.md)
55

6-
## **Google (36)**
6+
## **Google (37)**
77
| | | | | | | | | | | | | | | |
88
|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
99
|[P1](src/main/java/in/ashwanik/dcp/problems/p1_30/p1)|[P3](src/main/java/in/ashwanik/dcp/problems/p1_30/p3)|[P8](src/main/java/in/ashwanik/dcp/problems/p1_30/p8)|[P14](src/main/java/in/ashwanik/dcp/problems/p1_30/p14)|[P17](src/main/java/in/ashwanik/dcp/problems/p1_30/p17)|[P18](src/main/java/in/ashwanik/dcp/problems/p1_30/p18)|[P20](src/main/java/in/ashwanik/dcp/problems/p1_30/p20)|[P23](src/main/java/in/ashwanik/dcp/problems/p1_30/p23)|[P24](src/main/java/in/ashwanik/dcp/problems/p1_30/p24)|[P26](src/main/java/in/ashwanik/dcp/problems/p1_30/p26)|[P31](src/main/java/in/ashwanik/dcp/problems/p31_60/p31)|[P35](src/main/java/in/ashwanik/dcp/problems/p31_60/p35)|[P37](src/main/java/in/ashwanik/dcp/problems/p31_60/p37)|[P42](src/main/java/in/ashwanik/dcp/problems/p31_60/p42)|[P44](src/main/java/in/ashwanik/dcp/problems/p31_60/p44)|
1010
|[P48](src/main/java/in/ashwanik/dcp/problems/p31_60/p48)|[P52](src/main/java/in/ashwanik/dcp/problems/p31_60/p52)|[P56](src/main/java/in/ashwanik/dcp/problems/p31_60/p56)|[P61](src/main/java/in/ashwanik/dcp/problems/p61_90/p61)|[P64](src/main/java/in/ashwanik/dcp/problems/p61_90/p64)|[P67](src/main/java/in/ashwanik/dcp/problems/p61_90/p67)|[P68](src/main/java/in/ashwanik/dcp/problems/p61_90/p68)|[P72](src/main/java/in/ashwanik/dcp/problems/p61_90/p72)|[P73](src/main/java/in/ashwanik/dcp/problems/p61_90/p73)|[P76](src/main/java/in/ashwanik/dcp/problems/p61_90/p76)|[P78](src/main/java/in/ashwanik/dcp/problems/p61_90/p78)|[P80](src/main/java/in/ashwanik/dcp/problems/p61_90/p80)|[P83](src/main/java/in/ashwanik/dcp/problems/p61_90/p83)|[P86](src/main/java/in/ashwanik/dcp/problems/p61_90/p86)|[P90](src/main/java/in/ashwanik/dcp/problems/p61_90/p90)|
11-
|[P94](src/main/java/in/ashwanik/dcp/problems/p91_120/p94)|[P100](src/main/java/in/ashwanik/dcp/problems/p91_120/p100)|[P104](src/main/java/in/ashwanik/dcp/problems/p91_120/p104)|[P108](src/main/java/in/ashwanik/dcp/problems/p91_120/p108)|[P111](src/main/java/in/ashwanik/dcp/problems/p91_120/p111)|[P113](src/main/java/in/ashwanik/dcp/problems/p91_120/p113)|
11+
|[P94](src/main/java/in/ashwanik/dcp/problems/p91_120/p94)|[P100](src/main/java/in/ashwanik/dcp/problems/p91_120/p100)|[P104](src/main/java/in/ashwanik/dcp/problems/p91_120/p104)|[P108](src/main/java/in/ashwanik/dcp/problems/p91_120/p108)|[P111](src/main/java/in/ashwanik/dcp/problems/p91_120/p111)|[P113](src/main/java/in/ashwanik/dcp/problems/p91_120/p113)|[P115](src/main/java/in/ashwanik/dcp/problems/p91_120/p115)|
1212

1313

1414
## **Facebook (16)**
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Given two non-empty binary trees s and t, check whether tree t has exactly the
2+
same structure and node values with a subtree of s. A subtree of s is a tree
3+
consists of a node in s and all of this node's descendants. The tree s could
4+
also be considered as a subtree of itself.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package in.ashwanik.dcp.problems.p91_120.p115;
2+
3+
import in.ashwanik.dcp.common.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
class Solution {
9+
10+
boolean isSubTree(TreeNode<Integer> S, TreeNode<Integer> T) {
11+
if (S == null) {
12+
return false;
13+
}
14+
15+
List<String> s = new ArrayList<>();
16+
List<String> t = new ArrayList<>();
17+
18+
inorder(S, s);
19+
inorder(T, t);
20+
21+
String sStr = String.join(",", s);
22+
String tStr = String.join(",", t);
23+
if (!sStr.contains(tStr)) {
24+
return false;
25+
}
26+
27+
s.clear();
28+
t.clear();
29+
30+
preorder(S, s);
31+
preorder(T, t);
32+
33+
sStr = String.join(",", s);
34+
tStr = String.join(",", t);
35+
return sStr.contains(tStr);
36+
}
37+
38+
39+
private void inorder(TreeNode<Integer> root, List<String> items) {
40+
if (root == null) {
41+
items.add("$");
42+
return;
43+
}
44+
inorder(root.getLeft(), items);
45+
items.add(root.getData().toString());
46+
inorder(root.getRight(), items);
47+
}
48+
49+
50+
private void preorder(TreeNode<Integer> root, List<String> items) {
51+
if (root == null) {
52+
items.add("$");
53+
return;
54+
}
55+
items.add(root.getData().toString());
56+
preorder(root.getLeft(), items);
57+
preorder(root.getRight(), items);
58+
}
59+
60+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package in.ashwanik.dcp.problems.p91_120.p115;
2+
3+
import in.ashwanik.dcp.common.TreeNode;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.assertTrue;
7+
8+
public class SolutionTest {
9+
@Test
10+
void testIsSubTree() {
11+
TreeNode<Integer> root = new TreeNode<>(1,
12+
new TreeNode<>(2),
13+
new TreeNode<>(3,
14+
new TreeNode<>(4),
15+
new TreeNode<>(5)));
16+
17+
assertTrue(new Solution().isSubTree(root, root.getRight()));
18+
}
19+
}

0 commit comments

Comments
 (0)