Skip to content

Commit c88f251

Browse files
Sean PrashadSean Prashad
authored andcommitted
Add 297_Serialize_and_Deserialize_Binary_Tree.java
1 parent 3f085cf commit c88f251

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
public class Codec {
2+
3+
// Encodes a tree to a single string.
4+
public String serialize(TreeNode root) {
5+
if (root == null) {
6+
return "";
7+
}
8+
9+
StringBuilder sb = new StringBuilder();
10+
Queue<TreeNode> q = new LinkedList<>();
11+
q.offer(root);
12+
13+
while (!q.isEmpty()) {
14+
int levelSize = q.size();
15+
16+
for (int i = 0; i < levelSize; i++) {
17+
TreeNode t = q.poll();
18+
19+
if (t == null) {
20+
sb.append("null ");
21+
continue;
22+
}
23+
24+
sb.append(t.val).append(" ");
25+
26+
q.offer(t.left);
27+
q.offer(t.right);
28+
}
29+
}
30+
31+
return sb.toString();
32+
}
33+
34+
// Decodes your encoded data to tree.
35+
public TreeNode deserialize(String data) {
36+
if (data == null || data.length() == 0) {
37+
return null;
38+
}
39+
40+
String[] nodes = data.split(" ");
41+
Queue<TreeNode> q = new LinkedList<>();
42+
43+
TreeNode root = new TreeNode(Integer.parseInt(nodes[0]));
44+
q.offer(root);
45+
46+
for (int i = 1; i < nodes.length; i++) {
47+
TreeNode parent = q.poll();
48+
49+
if (!nodes[i].equals("null")) {
50+
TreeNode left = new TreeNode(Integer.parseInt(nodes[i]));
51+
parent.left = left;
52+
q.offer(left);
53+
}
54+
55+
++i;
56+
57+
if (!nodes[i].equals("null")) {
58+
TreeNode right = new TreeNode(Integer.parseInt(nodes[i]));
59+
parent.right = right;
60+
q.offer(right);
61+
}
62+
}
63+
64+
return root;
65+
}
66+
}

0 commit comments

Comments
 (0)