Skip to content

Commit 8b5e043

Browse files
committed
feat: serialize-and-deserialize-binary-tree
1 parent 6fa701f commit 8b5e043

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/**
2+
* <a href="https://leetcode.com/problems/serialize-and-deserialize-binary-tree/">week12-4. serialize-and-deserialize-binary-tree </a>
3+
* <li>Description: Design an algorithm to serialize and deserialize a binary tree </li>
4+
* <li>Topics: String, Tree, Depth-First Search, Breadth-First Search, Design, Binary Tree </li>
5+
* <li>Time Complexity: O(N), Runtime 14ms </li>
6+
* <li>Space Complexity: O(N), Memory 45.44MB </li>
7+
*/
8+
public class Codec {
9+
10+
public String serialize(TreeNode root) {
11+
if (root == null) {
12+
return null;
13+
}
14+
15+
Queue<TreeNode> queue = new LinkedList<>();
16+
queue.add(root);
17+
18+
StringBuilder sb = new StringBuilder();
19+
while (!queue.isEmpty()) {
20+
TreeNode node = queue.poll();
21+
if (node == null) {
22+
sb.append("null,");
23+
continue;
24+
}
25+
sb.append(node.val).append(",");
26+
queue.add(node.left);
27+
queue.add(node.right);
28+
}
29+
30+
return sb.toString();
31+
}
32+
33+
public TreeNode deserialize(String data) {
34+
if (data == null) {
35+
return null;
36+
}
37+
38+
String[] values = data.split(",");
39+
40+
TreeNode root = new TreeNode(Integer.parseInt(values[0]));
41+
Queue<TreeNode> queue = new LinkedList<>();
42+
queue.add(root);
43+
44+
int i = 1;
45+
while (!queue.isEmpty()) {
46+
TreeNode parent = queue.poll();
47+
48+
if (!values[i].equals("null")) {
49+
TreeNode left = new TreeNode(Integer.parseInt(values[i]));
50+
parent.left = left;
51+
queue.add(left);
52+
}
53+
i++;
54+
55+
if (!values[i].equals("null")) {
56+
TreeNode right = new TreeNode(Integer.parseInt(values[i]));
57+
parent.right = right;
58+
queue.add(right);
59+
}
60+
i++;
61+
}
62+
63+
return root;
64+
}
65+
}

0 commit comments

Comments
 (0)