程序中二叉树在内存中,有些时候希望用文件的形式把二叉树记录下来
二叉树的序列过程:二叉树->字符串
二叉树的反序列过程:字符串-> 二叉树
二叉树的序列化
二叉树的序列化方式有以下几种:
1、根据先序遍历序列化
2、根据中序遍历序列化
3、根据后序遍历序列化
4、按层遍历序列化:队列
题目
给定一个二叉树的头节点head,已知二叉树的节点值类型为32位整型,请设计一种二叉树序列化和反序列化的方案并用代码实现。
序列化的关键点:用特殊字符表示一个节点的结束,否则产生的结果会有歧义,在这里我们用‘!’表示一个节点的结束,用‘#!’表示节点。
用什么方式序列化就用什么方式反序列化,并且一棵树用某种方式序列化的结果是唯一的,某字符串按照某种方式反序列化生成的二叉树的结果也是唯一的。
反序列化的关键点:将str类型的字符串根据‘!’拆分成数组,再按照原来序列化的方式生成二叉树。
序列化代码实现
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NUL