LeetCode 题解:297. 二叉树的序列化与反序列化,DFS,JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/
解题思路:
该题实际上并没有严格的要求将二叉树序列化为
[1,2,3,null,null,4,5]
的形式,只要能够输出为1,2,X,X,3,4,X,X,5,X,X
(X 表示节点为 null),并且重新反序列化为二叉树即可。序列化:
* 使用 DFS 遍历每个节点。
* 如果遇到节点为空,则返回 X。
* 如果节点有值,则将其和左右子树,按照根、左、右的顺序拼接成字符串。
反序列化:
* 由于已经按照根、左、右的顺序,对二叉树进行了序列化,只要按照这个顺序递归生成二叉树即可。
* 将序列化的字符串转换成数组,每次递归都出队一个值,就保证了根、左、右的顺序。
* 如果出队的值为 X,则生成一个 null,并将其返回。
* 如果出队的是正常值,则用其创建一个节点,并将其与递归生成的左右子树连接成二叉树。
复制代码
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/674013bd832fc01428b8659f0】。文章转载请联系作者。
评论