##题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
##解题思路
1,序列化和反序列化都可以通过前序遍历(根左右)来进行
2,序列化遇到null用“#”来标明
3,反序列化的时候遇到“#”则停止
##代码
/**
*
*/
package 二叉树;
/**
* <p>
* Title:请实现两个函数,分别用来序列化和反序列化二叉树
*
*
*/
public class SerializeAndDeserialize {
/**
* void
*
* @param args
*/
public String Serialize(TreeNode root) { //通过前序遍历来序列化二叉树,遇到null值则改为特殊符号
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();
}
public int index =-1;
public TreeNode Deserialize(String str) {
index++;
int len = str.length();
if(index>=len){
return null; //index从0开始,到末尾结束
}
String[] strs = str.split(","); //把字符串按照“,”分隔开
TreeNode node =null;
if(!strs[index].equals("#")){
node = new TreeNode(Integer.valueOf(strs[index]));
node.left =Deserialize(str);
node.right = Deserialize(str);
}
return node;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}