1、题目

2、正确解法(递归法)
public class Solution {
String Serialize(TreeNode root) {
if(root == null) return "";
return serializeStr(root, new StringBuilder()).toString();
}
private StringBuilder serializeStr(TreeNode node, StringBuilder sb){
sb.append(node.val).append("!");
if(node.left != null){
serializeStr(node.left, sb);
}else{
sb.append("#!");
}
if (node.right != null) {
serializeStr(node.right, sb);
} else {
sb.append("#!");
}
return sb;
}
TreeNode Deserialize(String str) {
if(str == null || str.length() == 0) return null;
String[] strings = str.split("!");
return DeserializeTree(strings);
}
private int index = 0;
private TreeNode DeserializeTree(String[] strings) {
if (strings[index].equals("#")) {
index++;
return null;
}
TreeNode node = new TreeNode(Integer.valueOf(strings[index]));
index++;
node.left = DeserializeTree(strings);
node.right = DeserializeTree(strings);
return node;
}
}