题目描述:
请实现两个函数,分别用来序列化和反序列化二叉树;
思路:序列化二叉树就是先序遍历这个二叉树,当出现null的时候就在序列化的字符串中用#表示,否则就把当前的节点的值追加到这个字符串中,反序列化就是通过这个字符串把原来的二叉树进行还原出来。
程序:
Copy:
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();
}
TreeNode Deserialize(String str) {
if(str==null)
return null;
String[] strr = str.split(",");
return Deserialize(strr);
}
int index=-1;
private TreeNode Deserialize(String[] strr) {
TreeNode node=null;
index++;
if(!strr[index].equals("#")){
node=new TreeNode(Integer.valueOf(strr[index]));
node.left=Deserialize(strr);
node.right=Deserialize(strr);
}
return node;
}