序列化二叉树
题目描述:
请实现两个函数,分别用来序列化和反序列化二叉树
解题思路:
根据前序遍历规则完成序列化与反序列化。null序列化为‘##’。
1.序列化是指通过前序遍历把二叉树变成数组
2.反序列化是指重建二叉树
public class Solution {
public int index = -1;
String Serialize(TreeNode pRootOfTree) {
StringBuffer stringBuffer = new StringBuffer();
if (pRootOfTree == null ){
stringBuffer.append("##,");
return stringBuffer.toString();
}
stringBuffer.append(pRootOfTree.val + ",");
stringBuffer.append(Serialize(pRootOfTree.left));
stringBuffer.append(Serialize((pRootOfTree.right)));
return stringBuffer.toString();
}
TreeNode Deserialize(String str) {
index ++;
int len = str.length();
if (index >= len) return null;
String[] strings = str.split(",");
TreeNode node = null;
if (!strings[index].equals("##")){
node = new TreeNode(Integer.valueOf(strings[index]));
node.left = Deserialize(str);
node.right = Deserialize(str);
}
return node;
}
}