Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit ad640cb

Browse files
refactor 606
1 parent 0b3a45a commit ad640cb

File tree

2 files changed

+63
-33
lines changed

2 files changed

+63
-33
lines changed

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

+47-14
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,56 @@
3939
*/
4040
public class _606 {
4141

42-
public String tree2str(TreeNode t) {
43-
if (t == null) {
44-
return "";
42+
public static class Solution1 {
43+
public String tree2str(TreeNode t) {
44+
if (t == null) {
45+
return "";
46+
}
47+
String result = "" + t.val;
48+
String left = tree2str(t.left);
49+
String right = tree2str(t.right);
50+
if (left.equals("") && right.equals("")) {
51+
return result;
52+
}
53+
if (left.equals("")) {
54+
return result + "()(" + right + ")";
55+
}
56+
if (right.equals("")) {
57+
return result + "(" + left + ")";
58+
}
59+
return result + "(" + left + ")(" + right + ")";
4560
}
46-
String result = "" + t.val;
47-
String left = tree2str(t.left);
48-
String right = tree2str(t.right);
49-
if (left.equals("") && right.equals("")) {
50-
return result;
51-
}
52-
if (left.equals("")) {
53-
return result + "()(" + right + ")";
61+
}
62+
63+
public static class Solution2 {
64+
public String tree2str(TreeNode t) {
65+
if (t == null) {
66+
return "";
67+
}
68+
StringBuilder sb = new StringBuilder();
69+
preorder(t, sb);
70+
return sb.toString();
5471
}
55-
if (right.equals("")) {
56-
return result + "(" + left + ")";
72+
73+
private void preorder(TreeNode root, StringBuilder sb) {
74+
if (root == null) {
75+
return;
76+
}
77+
sb.append(root.val);
78+
if (root.left != null) {
79+
sb.append("(");
80+
preorder(root.left, sb);
81+
sb.append(")");
82+
}
83+
if (root.right != null) {
84+
if (root.left == null) {
85+
sb.append("()");
86+
}
87+
sb.append("(");
88+
preorder(root.right, sb);
89+
sb.append(")");
90+
}
5791
}
58-
return result + "(" + left + ")(" + right + ")";
5992
}
6093

6194
}
+16-19
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,47 @@
11
package com.fishercoder;
22

33
import com.fishercoder.common.classes.TreeNode;
4+
import com.fishercoder.common.utils.TreeUtils;
45
import com.fishercoder.solutions._606;
56
import org.junit.BeforeClass;
67
import org.junit.Test;
78

9+
import java.util.Arrays;
10+
811
import static org.junit.Assert.assertEquals;
912

1013
/**
1114
* Created by stevesun on 6/4/17.
1215
*/
1316
public class _606Test {
14-
private static _606 test;
17+
private static _606.Solution1 solution1;
18+
private static _606.Solution2 solution2;
1519
private static TreeNode treeNode;
1620

1721
@BeforeClass
1822
public static void setup() {
19-
test = new _606();
23+
solution1 = new _606.Solution1();
24+
solution2 = new _606.Solution2();
2025
}
2126

2227
@Test
2328
public void test1() {
24-
treeNode = new TreeNode(1);
25-
treeNode.left = new TreeNode(2);
26-
treeNode.right = new TreeNode(3);
27-
treeNode.left.left = new TreeNode(4);
28-
System.out.println("Test1");
29-
assertEquals("1(2(4))(3)", test.tree2str(treeNode));
29+
treeNode = TreeUtils.constructBinaryTree(Arrays.asList(1, 2, 3, 4));
30+
assertEquals("1(2(4))(3)", solution1.tree2str(treeNode));
31+
assertEquals("1(2(4))(3)", solution2.tree2str(treeNode));
3032
}
3133

3234
@Test
3335
public void test2() {
34-
treeNode = new TreeNode(1);
35-
treeNode.left = new TreeNode(2);
36-
treeNode.right = new TreeNode(3);
37-
treeNode.left.right = new TreeNode(4);
38-
System.out.println("Test2");
39-
assertEquals("1(2()(4))(3)", test.tree2str(treeNode));
36+
treeNode = TreeUtils.constructBinaryTree(Arrays.asList(1, 2, 3, null, 4));
37+
assertEquals("1(2()(4))(3)", solution1.tree2str(treeNode));
38+
assertEquals("1(2()(4))(3)", solution2.tree2str(treeNode));
4039
}
4140

4241
@Test
4342
public void test3() {
44-
treeNode = new TreeNode(1);
45-
treeNode.right = new TreeNode(2);
46-
treeNode.right.right = new TreeNode(3);
47-
System.out.println("Test3");
48-
assertEquals("1()(2()(3))", test.tree2str(treeNode));
43+
treeNode = TreeUtils.constructBinaryTree(Arrays.asList(1, null, 2, null, 3));
44+
assertEquals("1()(2()(3))", solution1.tree2str(treeNode));
45+
assertEquals("1()(2()(3))", solution2.tree2str(treeNode));
4946
}
5047
}

0 commit comments

Comments
 (0)