- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
[toc]
题目描述
请实现两个函数,分别用来序列化和反序列化二叉树。
解题思路
这道题其实没什么好说的,在牛客网上,即使你在反序列化的时候直接输出root也能通过测试。
书上倒是写的听清楚。用到了dfs的思想,通过前序遍历来序列化或者反序列化。这块你只要自己写的格式能对应上,都是可以的。比如可以按照书中那样用$表示null并且用逗号分隔每个节点,也可以直接用下面第一种方法代码所示的0xFFFFFFFF标识null。需要注意的是,如果使用string来实现序列化之后的存储,那么在每个结点之后也要加分隔符,例如’,’。
下面贴出了三种实现方式
- 基于vector,好处就是你不需要在每个结点之后再加分隔符;
- 基于string,其他平台序列化之后的返回值类型都是string,牛客网搞特殊来了个char *,所以最后需要进行类型转换;
- 基于stringstream,代码更加简洁;
C++版代码实现
vector
1 | /* |
string
1 | class Solution { |
stringstream
1 | class Solution { |
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz