297. 二叉树的序列化与反序列化
https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/
思路很直接,先写一个序列化函数将树按某个顺序(前、中、后、层序)遍历输出,再写一个反序列化函数用相同的遍历方法将其还原。下面尝试分别用前后序和层序,注意中序无法反序列化,因为根节点在序列的位置不确定
一、前序
注意:一般语境下,单单前序遍历结果是不能还原二叉树结构的,因为缺少空指针的信息,至少要得到前、中、后序遍历中的两种才能还原二叉树。但是这里的 node 列表包含空指针的信息,所以只使用 node 列表就可以还原二叉树。

观察可知node第一个元素就是根节点(关键),即1是后面数组的根。之后2是左子树的根,再之后是null,即2的左子为空,再之后是4,即2的右子树根为4……以此类推
每次取第一个元素,之后递归数组即可
二、后序
与前序相反,最后一个就是根节点
三、层序
构造也是借鉴遍历树的思路,维护一个队列,此外设置一个游标帮助遍历序列
最后更新于