3
// Encodes a tree to a single string.4
public String serialize(TreeNode root) {6
Queue<TreeNode> q = new LinkedList<>();7
if (root != null) q.add(root);9
data = Integer.toString(root.val) + "e";10
while (!q.isEmpty()) {12
for (int i = 0; i < size; i++) {13
TreeNode node = q.poll();14
if (node.left != null) {15
data = data + Integer.toString(node.left.val) + "e";17
} else data = data + "N" + "e";18
if (node.right != null) {19
data = data + Integer.toString(node.right.val) + "e";21
} else data = data + "N" + "e";27
// Decodes your encoded data to tree.28
public TreeNode deserialize(String data) {29
if (data.length() == 0) return null;32
while (data.charAt(i) != 'e') s = s + data.charAt(i++);33
int d = Integer.parseInt(s);34
TreeNode root = new TreeNode(d);35
Queue<TreeNode> q = new LinkedList<>();37
while (i < data.length() && !q.isEmpty()) {39
for (int j = 0; j < size; j++) {42
TreeNode node = q.poll();43
while (data.charAt(i) != 'e') s = s + data.charAt(i++);44
if (s.equals("N")) node.left = null;46
TreeNode l = new TreeNode(Integer.parseInt(s));52
while (data.charAt(i) != 'e') s = s + data.charAt(i++);53
if (s.equals("N")) node.right = null;55
TreeNode r = new TreeNode(Integer.parseInt(s));