请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
public String serialize(TreeNode root) {
StringBuffer sb = new StringBuffer();
if(root == null){
sb.append("#,");
return sb.toString();
}
sb.append(root.val + ",");
sb.append(serialize(root.left));
sb.append(serialize(root.right));
return sb.toString();
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
String[] nodes = data.split(",");
return createTree(null, nodes);
}
int index = 0;
public TreeNode createTree(TreeNode node,String[] arr){
String data = arr[index++];//注意:index的值
if("#".equals(data)){
node = null;
}else{
Integer val = Integer.valueOf(data);
node = new TreeNode(val);
node.left = createTree(node.left,arr);
node.right = createTree(node.right,arr);
}
return node;
}