序列化二叉树
题目
请实现两个函数,分别用来序列化和反序列化二叉树。
class BinaryTreeNode {
int value;
BinaryTreeNode left;
BinaryTreeNode right;
}
思路
使用前序遍历来遍历一棵树,写出该树的序列。
代码
public class BinaryTreeSerialize {
//序列化
public void serialize(BinaryTreeNode root,StringBuffer sb){
if(root == null)
sb.append("$");
else{
sb.append(root.value);
serialize(root.left,sb);
serialize(root.right,sb);
}
}
//反序列化
public void deserialize(BinaryTreeNode root,StringBuffer sb){
StringBuffer temp = sb.deleteCharAt(0);
if(temp != null && temp != new StringBuffer('$')){
root = new BinaryTreeNode(temp.toString().charAt(0));
deserialize(root.left, sb);
deserialize(root.right, sb);
}
}
}
class BinaryTreeNode {
char value;
BinaryTreeNode left;
BinaryTreeNode right;
public BinaryTreeNode(char value) {
this.value = value;
}
}