import java.util.*;
public class Solution {
String Serialize(TreeNode root) {
if(root == null) return "#"; // 对所有的空节点也要存储占位符号"#"
return root.val + "," + Serialize(root.left) + "," + Serialize(root.right); // 递归前序遍历返回字符串
}
TreeNode Deserialize(String str) {
String[] s = str.split(","); // 切分字符串
Queue<String> queue = new LinkedList<String>();
for(String s1 : s){
queue.offer(s1);
}
return de(queue);
}
TreeNode de(Queue<String> queue) {
String s = queue.poll(); // 递归函数每次从队首读出一个元素,因此读出的顺序也是前序
if(s.equals("#")) return null; // 对递归推出条件之一进行处理
TreeNode head = new TreeNode(Integer.valueOf(s)); // 前序首先建立一个节点
head.left = de(queue); // 然后递归左右子节点
head.right = de(queue);
return head;
}
}