描述
序列化是将一个数据结构或对象转换成比特流的过程,以便将其存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一或另一计算机环境中重建。
设计一个算法来序列化和反序列化一个N叉树。一棵N叉树是一棵有根树,其中每个节点的子节点不超过N个。序列化/反序列化算法的实现方式没有限制。您只需要确保N叉树可以序列化为字符串,并且该字符串可以反序列化为原始树结构。
例如,你可以序列化如下的3叉树
为 [1 [3[5 6] 2 4]]。你不一定要遵循这种格式,发挥创意,自己想出不同的方法。
图模型说明: https://www.lintcode.com/help/graph
在线评测地址:领扣题库官网
样例1 输入:{1,3,2,4#2#3,5,6#4#5#6} 输出:{1,3,2,4#2#3,5,6#4#5#6} 解释:如上图
样例2 输入:{1,3,2#2#3} 输出:{1,3,2#2#3} 3 2
解题思路
题解:基本是dfs分治即可解决,对输入的有向图从1节点开始遍历构造字符串,遍历儿子节点前加入左括号,完成后加入右括号。还原N叉树同样,遇到左括号开始搜索,读取数字存入,遇到右括号退出。
源代码
/** * Definition for Directed graph. * class DirectedGraphNode { * int label; * ArrayList DirectedGraphNode neighbors; * DirectedGraphNode(int x) { label = x; neighbors = new ArrayList DirectedGraphNode } * }; public class Solution { public int pos = 1; public String dfs(DirectedGraphNode root) { String ans=""; if(root == null) return ans; ans += "["; ans += String.valueOf(root.label); for(int i = 0; i root.neighbors.size() ; i++) { ans += dfs(root.neighbors.get(i)); ans += "]"; return ans; public UndirectedGraphNode solve(String data) { int num = 0; while(data.charAt(pos) = '0' data.charAt(pos) = '9') { num *= 10; num += data.charAt(pos) - '0'; pos++; UndirectedGraphNode node = new UndirectedGraphNode(num); while(pos data.length()) { if(data.charAt(pos) == '[' ) { ++pos; node.neighbors.add(solve(data)); else if(data.charAt(pos) == ']') { pos++; return node; return null; public String serialize(ArrayList DirectedGraphNode nodes) { String ans=""; if(nodes.size() == 0) return ans; return dfs(nodes.get(0)); public UndirectedGraphNode deserialize(String data) { if(data.length() == 0) return null; return solve(data); }
更多题解参考:九章官网solution
案例背景 杭州市一医院是杭州市属最大综合性三级甲等医院,也是浙江省首批通过三...
专属主机控制台页面可以看到每台专属主机的总资源和可用资源。例如:deh-3cdd专...
link 在开窗处理事件时间(Event Time) 数据时,可设置水印延迟以及设置窗口允许...
TOP云 (west.cn)4月24日消息,据外媒报道,近日国外知名流行文化评论网站 域名...
本文作者 李雨前,阿里云弹性计算技术专家,有 5 年的大规模集群资源管理调度实...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...
公司 邮箱 可以群发邮件吗?公司邮箱可以进行公司内部或外部少量邮件的群发,但...
什么情况下需要使用云数据库?一般来说,是数据库文件很大,需要支持大量的客户...
1.什么是serverless? 1.1 serverless官方定义 serverless 中的 server 是 服务...
站长负责人知道国内的网站需要备案,备案需站长准备相关的资料,提交信息审核,...