文章目录
序列化的定义:
序列化(serialization)是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。
从一系列字节提取数据结构的反向操作,是反序列化。
一、先序方式序列化和反序列化
1、先序方式序列化
按先序遍历的方式,挨个将二叉树的各个节点,存储为一个以指定分隔符分隔的字符串,为空的节点也需要存储。
/**
* 先序方式序列化
*
* @author Java和算法学习:周一
*/
public static Queue<String> preSerial(Node head) {
Queue<String> ans = new LinkedList<>();
pre(head, ans);
return ans;
}
private static void pre(Node head, Queue<String> ans) {
if (head == null) {
ans.add(null);
} else {
ans.add(String.valueOf(head.value));
pre(head.left, ans);
pre(head.right, ans);
}
}
2、先序方式反序列化
按先序遍历的方式,挨个以指定分隔符切分之前的字符串,还原为原始二叉树。
/**
* 先序方式反序列化
*
* @author Java和算法学习:周一
*/
public static Node buildByPre(Queue<String> queue) {
if (queue == null || queue.size() == 0) {
return null;
}
return preB(queue);
}
private static Node preB(Queue<String> queue) {
String value = queue.poll();