import java.util.*; public class Solution { String Serialize(TreeNode root) { String res = ""; if(root == null) return res; Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); while (queue.size() != 0) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode cur = queue.poll(); if (cur != null){ res = res + cur.val + " "; queue.add(cur.left); queue.add(cur.right); }else { res += "# "; } } } return res; } TreeNode Deserialize(String str) { if (str.equals("")){ return null; } String[] strs = str.split(" "); Queue<TreeNode> queue = new LinkedList<>(); TreeNode res = new TreeNode(Integer.parseInt(strs[0])); queue.offer(res); for (int i = 1; i < strs.length; i = i + 2) { TreeNode temp = queue.poll(); if (!strs[i].equals("#")){ temp.left = new TreeNode(Integer.parseInt(strs[i])); queue.add(temp.left); } if (!strs[i + 1].equals("#")){ temp.right = new TreeNode(Integer.parseInt(strs[i + 1])); queue.add(temp.right); } } return res; } }