码迷,mamicode.com
首页 > 其他好文 > 详细

Lintcode7 Binary Tree Serialization solution 题解

时间:2017-04-18 00:01:15      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:solution   design   reading   二叉树   called   

【题目描述】

Design an algorithm and write code to serialize and deserialize a binary tree. Writing the tree to a file is called ‘serialization‘ and reading back from the file to reconstruct the exact same binary tree is ‘deserialization‘.

设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。

如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。

注意:There is no limit of how you deserialize or serialize a binary tree, LintCode will take your output of serialize as the input of deserialize, it won‘t check the result of serialize.

【题目链接】

http://www.lintcode.com/en/problem/binary-tree-serialization/

【题目解析】

根据之前由前序,中序,后序遍历恢复二叉树的经验,确定根节点的位置十分重要(但是这里可能有重复元素,故和之前的题目不太一样)。能直接确定根节点的有前序遍历和广度优先搜索,其中较为简洁的为前序遍历。序列化较为简单,但是反序列化的实现不太容易。需要借助字符串解析工具。

源码分析:由二叉树序列化的过程不难,难就难在根据字符串进行反序列化,这里引入了 Java 中的 StringTokenizer 字符串分割工具,非常方便,使得递归得以顺利实现。其中deseriaHelper的实现较为巧妙。

【答案链接】

http://www.jiuzhang.com/solutions/binary-tree-serialization/


Lintcode7 Binary Tree Serialization solution 题解

标签:solution   design   reading   二叉树   called   

原文地址:http://12799252.blog.51cto.com/12789252/1916821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!