// 题目描述
// 请实现两个函数,分别用来序列化和反序列化二叉树
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
String Serialize(TreeNode root) {
StringBuilder stringBuilder = new StringBuilder();
doSerialize(root,stringBuilder);
return stringBuilder.toString();
}
public void doSerialize(TreeNode root,StringBuilder stringBuilder){
if (root==null){
stringBuilder.append("#,");
return;
}
stringBuilder.append(root.val);
stringBuilder.append(",");
doSerialize(root.left,stringBuilder);
doSerialize(root.right,stringBuilder);
}
TreeNode Deserialize(String str) {
if (str==null){
return null;
}
String[] strings = str.split(",");
return doDeserialize(strings);
}
int index = -1;
public TreeNode doDeserialize(String[] str){
index ++;
if (!str[index].equals("#")){
TreeNode node = new TreeNode(Integer.valueOf(str[index]));
node.left = doDeserialize(str);
node.right= doDeserialize(str);
return node;
}
return null;
}