Skip to content

Commit 2923486

Browse files
authored
Merge pull request #404 from adityadmahale/main
Create 297-Serialize-and-Deserialize-Binary-Tree.java
2 parents 94e2c64 + a5747ab commit 2923486

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
public class Codec {
11+
12+
private int i;
13+
14+
// Encodes a tree to a single string.
15+
public String serialize(TreeNode root) {
16+
List<String> list = new ArrayList<>();
17+
serializeDFS(root, list);
18+
19+
return String.join(",", list);
20+
}
21+
22+
private void serializeDFS(TreeNode root, List<String> list) {
23+
if (root == null) {
24+
list.add("N");
25+
return;
26+
}
27+
list.add(String.valueOf(root.val));
28+
serializeDFS(root.left, list);
29+
serializeDFS(root.right, list);
30+
}
31+
32+
// Decodes your encoded data to tree.
33+
public TreeNode deserialize(String data) {
34+
String[] tokens = data.split(",");
35+
return deserializeDFS(tokens);
36+
}
37+
38+
private TreeNode deserializeDFS(String[] tokens) {
39+
String token = tokens[this.i];
40+
if (token.equals("N")) {
41+
this.i++;
42+
return null;
43+
}
44+
var node = new TreeNode(Integer.parseInt(token));
45+
this.i++;
46+
node.left = deserializeDFS(tokens);
47+
node.right = deserializeDFS(tokens);
48+
return node;
49+
}
50+
}
51+
52+
// Your Codec object will be instantiated and called as such:
53+
// Codec ser = new Codec();
54+
// Codec deser = new Codec();
55+
// TreeNode ans = deser.deserialize(ser.serialize(root));

0 commit comments

Comments
 (0)