8000 refactor 572 · codingwhite/Leetcode-4@b4e6ab7 · GitHub
[go: up one dir, main page]

Skip to content

Commit b4e6ab7

Browse files
refactor 572
1 parent 369fe1f commit b4e6ab7

File tree

2 files changed

+57
-32
lines changed

2 files changed

+57
-32
lines changed

src/main/java/com/fishercoder/solutions/_572.java

8000
Lines changed: 53 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -41,38 +41,63 @@
4141
*/
4242
public class _572 {
4343

44-
public boolean isSubtree(TreeNode s, TreeNode t) {
45-
if (s == null && t == null) {
46-
return true;
44+
public static class Solution1 {
45+
public boolean isSubtree(TreeNode s, TreeNode t) {
46+
if (s == null && t == null) {
47+
return true;
48+
}
49+
boolean isSubTree = false;
50+
if (s != null && t != null && s.val == t.val) {
51+
isSubTree = isSameTree(s, t);
52+
}
53+
if (isSubTree) {
54+
return true;
55+
}
56+
boolean isSubTreeLeft = false;
57+
if (s.left != null) {
58+
isSubTreeLeft = isSubtree(s.left, t);
59+
}
60+
if (isSubTreeLeft) {
61+
return true;
62+
}
63+
boolean isSubTreeRight = false;
64+
if (s.right != null) {
65+
isSubTreeRight = isSubtree(s.right, t);
66+
}
67+
if (isSubTreeRight) {
68+
return true;
69+
}
70+
return false;
4771
}
48-
boolean isSubTree = false;
49-
if (s != null && t != null && s.val == t.val) {
50-
isSubTree = isSameTree(s, t);
51-
}
52-
if (isSubTree) {
53-
return true;
54-
}
55-
boolean isSubTreeLeft = false;
56-
if (s.left != null) {
57-
isSubTreeLeft = isSubtree(s.left, t);
58-
}
59-
if (isSubTreeLeft) {
60-
return true;
61-
}
62-
boolean isSubTreeRight = false;
63-
if (s.right != null) {
64-
isSubTreeRight = isSubtree(s.right, t);
65-
}
66-
if (isSubTreeRight) {
67-
return true;
72+
73+
private boolean isSameTree(TreeNode p, TreeNode q) {
74+
if (p == null || q == null) {
75+
return p == q;
76+
}
77+
return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
6878
}
69-
return false;
7079
}
7180

72-
private boolean isSameTree(TreeNode p, TreeNode q) {
73-
if (p == null || q == null) {
74-
return p == q;
81+
public static class Solution2 {
82+
public boolean isSubtree(TreeNode s, TreeNode t) {
83+
if (s == null) {
84+
return false;
85+
}
86+
if (same(s, t)) {
87+
return true;
88+
}
89+
return isSubtree(s.left, t) || isSubtree(s.right, t);
90+
}
91+
92+
private boolean same(TreeNode s, TreeNode t) {
93+
if (s == null || t == null) {
94+
return s == t;
95+
}
96+
if (s.val != t.val) {
97+
return false;
98+
}
99+
return same(s.left, t.left) && same(s.right, t.right);
75100
}
76-
return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
101+
77102
}
78103
}

src/test/java/com/fishercoder/_572Test.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
* Created by fishercoder on 5/6/17.
1212
*/
1313
public class _572Test {
14-
private static _572 test;
14+
private static _572.Solution1 solution1;
1515
private static boolean expected;
1616
private static boolean actual;
1717

1818
@BeforeClass
1919
public static void setup() {
20-
test = new _572();
20+
solution1 = new 6D40 _572.Solution1();
2121
}
2222

2323
@Test
@@ -33,7 +33,7 @@ public void test1() {
3333
t.left = new TreeNode(1);
3434
t.right = new TreeNode(2);
3535
expected = false;
36-
actual = test.isSubtree(s, t);
36+
actual = solution1.isSubtree(s, t);
3737
assertEquals(expected, actual);
3838
}
3939

@@ -49,7 +49,7 @@ public void test2() {
4949
t.left = new TreeNode(1);
5050
t.right = new TreeNode(2);
5151
expected = true;
52-
actual = test.isSubtree(s, t);
52+
actual = solution1.isSubtree(s, t);
5353
assertEquals(expected, actual);
5454
}
5555
}

0 commit comments

Comments
 (0)
0