Skip to content

Commit fd2a43c

Browse files
committed
add serialize and deserialize binary tree solution
1 parent f3e51e9 commit fd2a43c

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import java.util.Arrays;
2+
import java.util.LinkedList;
3+
import java.util.Queue;
4+
5+
/**
6+
* Definition for a binary tree node.
7+
* public class TreeNode {
8+
* int val;
9+
* TreeNode left;
10+
* TreeNode right;
11+
* TreeNode(int x) { val = x; }
12+
* }
13+
*/
14+
public class Codec {
15+
16+
private StringBuilder sb = new StringBuilder();
17+
18+
// Encodes a tree to a single string.
19+
public String serialize(TreeNode root) {
20+
serializeNode(root);
21+
return sb.toString();
22+
}
23+
24+
private void serializeNode(TreeNode node) {
25+
// null인 경우 구분 위해 null 문자열 삽입
26+
if (node == null) {
27+
sb.append("null,");
28+
return;
29+
}
30+
sb.append(node.val).append(",");
31+
serializeNode(node.left);
32+
serializeNode(node.right);
33+
}
34+
35+
// Decodes your encoded data to tree.
36+
public TreeNode deserialize(String data) {
37+
String[] dataArr = data.split(",");
38+
Queue<String> queue = new LinkedList<>(Arrays.asList(dataArr));
39+
return buildTree(queue);
40+
}
41+
42+
private TreeNode buildTree(Queue<String> queue) {
43+
String val = queue.poll();
44+
if (val.equals("null")) {
45+
return null;
46+
}
47+
TreeNode node = new TreeNode(Integer.parseInt(val));
48+
node.left = buildTree(queue);
49+
node.right = buildTree(queue);
50+
51+
return node;
52+
53+
}
54+
}
55+
56+
// Your Codec object will be instantiated and called as such:
57+
// Codec ser = new Codec();
58+
// Codec deser = new Codec();
59+
// TreeNode ans = deser.deserialize(ser.serialize(root));
60+

0 commit comments

Comments
 (0)