免费的ai绘图网站有哪些,深圳建站服务中心,浚县网站建设,如何制作网址内容力扣labuladong一刷day32天二叉树
一、297. 二叉树的序列化与反序列化
题目链接#xff1a;https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/ 思路#xff1a;关于序列化与反序列化#xff0c;题目不要求序列化的方式#xff0c;只要求树经过序列化…力扣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;}
}