力扣labuladong一刷day32天二叉树
一、297. 二叉树的序列化与反序列化
题目链接:https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/
思路:关于序列化与反序列化,题目不要求序列化的方式,只要求树经过序列化和反序列化之后依然一样,如果序列化的过程中记录了空节点则只通过前序或者后序就可以完整记录二叉树的信息,可以还原,但中序不可以。
我采用”,“分割不同节点,”#”表示null。前序遍历拼接字符串进行序列化,反序列化,也是前序遍历,当然需要在进入递归之前new 一个节点,然后把递归的返回值设置为该节点的左右子节点。
public class Codec {
StringBuilder builder = new StringBuilder();
LinkedListString> list = new LinkedList>();
public String serialize(TreeNode root) {
traverse(root);
return builder.toString();
}
public TreeNode deserialize(String data) {
String[] split = data.split(",");
for (String s : split) {
list.add(s);
}
return create();
}
void traverse(TreeNode root) {
if (root == null) {
builder.append("#,");
return;
}
builder.append(root.val).append(",");
traverse(root.left);
traverse(root.right);
}
TreeNode create() {
if (list.isEmpty()) {
return null;
}
String s = list.removeFirst();
if ("#".equals(s)) return null;
服务器托管网 TreeNode node = new TreeNode(Integer.parseInt(s));
node.left = create();
node.right = create();
服务器托管网 return node;
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
目录 1.初识MQ 1.1.同步和异步通讯 1.1.1.同步通讯 1.1.2.异步通讯 1.2.技术对比: 2.快速入门 2.1.安装RabbitMQ 2.2.RabbitMQ消息模型 2.3.导入Demo工程 2.4.入门案例 2.4.1.publisher…