当前位置:网站首页>20220529设计问题:二叉树的序列化与反序列化
20220529设计问题:二叉树的序列化与反序列化
2022-08-09 02:37:00 【丿SeeYouAgain】
题目描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。
请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
编码实现:
private static final String TMP= "-",SEP= ",";
public String serialize(TreeNode root) {
StringBuilder sb = new StringBuilder();
serialize(root, sb);
return sb.toString();
}
private void serialize(TreeNode root, StringBuilder sb) {
if (root == null){
sb.append(TMP).append(SEP);
return;
}
sb.append(root.val).append(SEP);
serialize(root.left, sb);
serialize(root.right, sb);
}
public TreeNode deserialize(String data) {
LinkedList<String> nodes = new LinkedList<>();
Collections.addAll(nodes, data.split(SEP));
return deserialize(nodes);
}
private TreeNode deserialize(LinkedList<String> nodes) {
if (nodes.isEmpty()){
return null;
}
String val = nodes.removeFirst();
if (TMP.equals(val)){
return null;
}
TreeNode root = new TreeNode(Integer.parseInt(val));
root.left = deserialize(nodes);
root.right = deserialize(nodes);
return root;
}
边栏推荐
- 金融行业软件测试面试题(含答案)| 入门指南
- 点击div内部默认文本被选中
- Likou Brush Question Record--Common Functions
- Open3D 随机采样
- 企业从云服务的承诺支出中获得最大收益的四种方法
- JS 将对象拆开拼接成 URL
- 2022 China Eye Expo, China Beijing International Children and Adolescent Eye Health Industry Exhibition
- 时间复杂度和空间复杂度
- 1160. 拼写单词
- eladmin container deployment super detailed process
猜你喜欢
【Jenkins 学习笔记】玩转持续集成与持续交付
Recently, I have seen a lot of people who want to study by themselves or enroll in classes but don’t know how to choose. I will tell you about it today.
Likou Brush Question Record 3.1-----977. Square of ordered array
Working subtotal rtcp length and network byte order
继承 Inheritance
中国SSD产业突围有多难?除了技术“瓶颈”还有哪里挑战?
Redis - 时间序列数据类型的保存方案和消息队列实现
概率模型校准
历史最全DL相关书籍、课程、视频、论文、数据集、会议、框架和工具整理分享
9.1-----24. Swap the nodes in the linked list in pairs
随机推荐
【电商运营】不知道怎么做网站优化?这里有你需要知道的一切!
普通人如何增加收入
online schema change and create index
MT4 / MQL4 entry to the master of EA course lesson two - commonly used functions
YOLOV1详解——Pytorch版
SQLite切换日志模式优化
The first lesson of HNUMSC-C language
Line segment tree of knowledge
Recently, I have seen a lot of people who want to study by themselves or enroll in classes but don’t know how to choose. I will tell you about it today.
C#计算SHA1加密和base64编码
2022年最流行的自动化测试工具有哪些?全网最全最细都在这里了
【Untitled】
工作小计 rtcp的length和网络字节序
全志平台双路LVDS配置
ROS 、SLAM 学习 error整理
My thoughts on software development
危化企业双预防机制数字化建设工作要求
炫酷-轮播图-走马灯
HMS Core分析服务智能运营6.5.1版本上线
带你做接口测试从零到第一条用例 总结