模板下载网站什么好,交友软件开发教程,什么是网络营销的出发点,网站公告栏模板题目
序列化是将一个数据结构或者对象转换为连续的比特位的操作#xff0c;进而可以将转换后的数据存储在一个文件或者内存中#xff0c;同时也可以通过网络传输到另一个计算机环境#xff0c;采取相反方式重构得到原数据。
请设计一个算法来实现二叉树的序列化与反序列化…题目
序列化是将一个数据结构或者对象转换为连续的比特位的操作进而可以将转换后的数据存储在一个文件或者内存中同时也可以通过网络传输到另一个计算机环境采取相反方式重构得到原数据。
请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
提示: 输入输出格式与 LeetCode 目前使用的方式一致详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式你也可以采用其他的方法解决这个问题。
示例 1
输入root [1,2,3,null,null,4,5] 输出[1,2,3,null,null,4,5] 示例 2
输入root [] 输出[] 示例 3
输入root [1] 输出[1] 示例 4
输入root [1,2] 输出[1,2] 解题思路
序列化时先序遍历二叉树使用null表示空节点使用’,分隔每一个节点反序列化时将字符串使用’,分割回去原来的若干个节点元素同样先序遍历这些节点就能还原出这颗二叉树
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/public class Codec {// Encodes a tree to a single string.public void se(TreeNode root,StringBuilder strings) {if(rootnull)strings.append(null).append(,);else {strings.append(root.val).append(,);se(root.left,strings);se(root.right,strings);}}public String serialize(TreeNode root) {StringBuilder builder new StringBuilder(); se(root,builder);return builder.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {String[] strings data.split(,);return de(strings);}int cur0;public TreeNode de(String[] strings){if(curstrings.length||strings[cur].equals(null)){cur;return null; }else {TreeNode c new TreeNode(Integer.parseInt(strings[cur]));cur;c.left de(strings);c.rightde(strings);return c;}}}// Your Codec object will be instantiated and called as such:
// Codec codec new Codec();
// codec.deserialize(codec.serialize(root));