二叉树的正序列化:把二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。
序列化可以基于 先序、中序、后序、层序 的方式来进行遍历。
层序序列化要求:
1、从二叉树的根节点开始,逐层遍历
2、数据之间使用逗号“,”隔开
3、树的节点中,存在的节点将值(51、7、13等)存入数组中即可
4、结尾如果有不存在的节点,则全部忽略
根据规则,忽略掉结尾不存在的节点后,字符串应该为"51,7,13,5,,26,17,,,,,9"
一、正序列化
根据要求我们可以看出是用层序排序法来序列化,推荐用队列来存储节点。
实现步骤:
1.首先我们先将树的根节点(51)存入队列
2.利用队列先进先出原理取出根节点(51)
3.此时再存入根节点的左右子节点(左子节点:7,右子节点:13),那么队列中就有两个节点(7,13)
4.此时我们再从队列中取出当前根节点的左子节点(7),队列中只剩一个节点(13)
5.添加左子节点(7)的左右子节点(5,0),此时队列中节点个数为三个(13,5,0,这里空节点我们用0表示)
6.以此类推,直到所有节点都加入队列,并从队列中取出后,队列中无任何节点
代码示例
二叉树的反序列化:从文件或者数组中取出数据,重构二叉树
二、反序列化
依然采用队列来存储我们想要的树,再利用队列特性一一取出并赋值上符串相应的数值
实现步骤:
1.首先我们先定义一个树并初始化节点数值为0
2.将根节点存入队列
3.将队列的第一个节点取出并赋值
4.将根节点(51)的左右子节点放入队列中
5.将根节点的左子(7)节点取出并赋值,
6.加入节点(7)的左右子节点
6.以此类推,直到所有节点都加入队列,并从队列中取出后,队列中无任何节点
代码示例
网友评论