Skip to content

Commit ee3c6de

Browse files
committed
exxtracted Treenode class to reuse; implemented Sub Tree checker reusing TreeComparison method
1 parent aa7056e commit ee3c6de

File tree

4 files changed

+46
-23
lines changed

4 files changed

+46
-23
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131

132132
### Trees
133133
- [ ] [Same Tree](https://leetcode.com/problems/same-tree/)
134+
- [x] [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/)
134135
### Heaps
135136

136137
## Multithreading
@@ -423,8 +424,6 @@
423424
- [ ] [Shortest Common Supersequence | Introduction & SCS Length](http://www.techiedelight.com/shortest-common-supersequence-introduction-scs-length/)
424425
- [ ] [Shortest Common Supersequence | Finding all SCS](http://www.techiedelight.com/shortest-common-supersequence-finding-scs/)
425426
- [ ] [Shortest Common Supersequence | Using LCS](http://www.techiedelight.com/shortest-common-supersequence-using-lcs/)
426-
- Tree
427-
- [ ] [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/)
428427

429428
- Binary Tree
430429
- [ ] [Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dataStructures.trees;
2+
3+
public class SubTreeChecker {
4+
public static void main(String[] args) {
5+
TreeNode p = new TreeNode(1, new TreeNode(2), new TreeNode(3));
6+
TreeNode q = new TreeNode(2);
7+
8+
if (isSubtree(p, q)) {
9+
System.out.println("Subtree!");
10+
} else {
11+
System.out.println("Not a subtree");
12+
}
13+
}
14+
15+
private static boolean isSubtree(TreeNode root, TreeNode subRoot) {
16+
if (root == null) {
17+
return subRoot == null;
18+
}
19+
if (TreeComparison.isSameTree(root, subRoot)) {
20+
return true;
21+
} else {
22+
return TreeComparison.isSameTree(root.left, subRoot) || TreeComparison.isSameTree(root.right, subRoot);
23+
}
24+
}
25+
}

src/dataStructures/trees/TreeComparison.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,4 @@ public static boolean isSameTree(TreeNode p, TreeNode q) {
3232

3333
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
3434
}
35-
36-
37-
// Definition for a binary tree node.
38-
public static class TreeNode {
39-
int val;
40-
TreeNode left;
41-
TreeNode right;
42-
43-
TreeNode() {
44-
}
45-
46-
TreeNode(int val) {
47-
this.val = val;
48-
}
49-
50-
TreeNode(int val, TreeNode left, TreeNode right) {
51-
this.val = val;
52-
this.left = left;
53-
this.right = right;
54-
}
55-
}
5635
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package dataStructures.trees;
2+
3+
public class TreeNode {
4+
int val;
5+
TreeNode left;
6+
TreeNode right;
7+
8+
TreeNode() {
9+
}
10+
11+
TreeNode(int val) {
12+
this.val = val;
13+
}
14+
15+
TreeNode(int val, TreeNode left, TreeNode right) {
16+
this.val = val;
17+
this.left = left;
18+
this.right = right;
19+
}
20+
}

0 commit comments

Comments
 (0)