当前位置: 首页 > news >正文

艺术视频手机网站可以做吗在线免费开网站

艺术视频手机网站可以做吗,在线免费开网站,东莞建设年审网站,做彩票网站需要什么条件题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 …

题目

请实现两个函数,分别用来序列化和反序列化二叉树。

你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。

示例:

输入:root = [1,2,3,null,null,4,5]
输出:[1,2,3,null,null,4,5]

 

解题思路

1.题目要求我们实现两个函数,分别用来序列化和反序列化二叉树。首先我们来实现序列化二叉树,也就是将二叉树的层序遍历变为一个数组,那我们就需要用一个StringBuilder (res)来拼接遍历到的元素,还需要一个队列 queue 来按照层序遍历来遍历二叉树,首先我们将根节点放入 queue 中,当 queue不为null,我们就让queue中的元素出队,然后判断当前出队元素是否为null,若当前出队元素不为null,我们就将当前出队元素与“,”(逗号)拼接到 StringBuilder (res)中,然后再将当前出队元素的左右孩子加入队列中。若当前出队元素为 null,我们就将 “null,”拼接到 queue 中。最后我们将多余的“,”删除,并且加上“]”,然后返回即可。

2.反序列化的实现有一点复杂我们画图来看,

举个例子:

 实现反序列化我们依旧需要一个队列 queue,然后将所给的数组去除逗号后将它保存在数组vals中,我们知道层序遍历的第一个元素是二叉树的根节点,所以我们先让 vals[0] 入队。同时设置一个变量i = 1(遍历数组用)。

 当队列queue不为null时,我们让队头元素出列(2出列),这时 i 指向的元素不为 null 恰好是(2)的左孩子,所以我们就要令(2) 的左孩子指向(3),并且让(3)入队。然后我让 i 后移一位,

 这时 i 指向的元素不为 null 恰好是(2)的右孩子,所以我们就要令(2) 的右孩子指向(4),并且让(4)入队。然后我让 i 后移一位,

 queue不为null,我们让队头元素出列(3出列),这时 i 指向的元素不为 null 恰好是(3)的左孩子,所以我们就要令(3) 的左孩子指向(5),并且让(5)入队。然后我让 i 后移一位,

 这时 i 指向的元素为 null ,我们不做任何操作,因为(3)的右孩子(node.right)初始值就为null,我直接将 i 后移一位,

 queue不为null,我们让队头元素出列(4出列),这时 i 指向的元素不为 null 恰好是(4)的左孩子,所以我们就要令(4) 的左孩子指向(6),并且让(6)入队。然后我让 i 后移一位, 

 i 指向的元素为 null ,我们不做任何操作,接将 i 后移一位,

 queue不为null,我们让队头元素出列(5出列), i 指向的元素为 null ,我们不做任何操作,接将 i 后移一位,

 i 指向的元素为 null ,我们不做任何操作,接将 i 后移一位,

  queue不为null,我们让队头元素出列(6出列), i 指向的元素为 null ,我们不做任何操作,接将 i 后移一位,

  i 指向的元素为 null ,我们不做任何操作,接将 i 后移一位,

代码实现

public class Codec {public String serialize(TreeNode root) {if(root == null) return "[]";StringBuilder res = new StringBuilder("[");Queue<TreeNode> queue = new LinkedList<>() {{ add(root); }};while(!queue.isEmpty()) {TreeNode node = queue.poll();if(node != null) {res.append(node.val + ",");queue.add(node.left);queue.add(node.right);}else res.append("null,");}res.deleteCharAt(res.length() - 1);res.append("]");return res.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {if(data.equals("[]")) return null;String[] vals = data.substring(1, data.length() - 1).split(",");TreeNode root = new TreeNode(Integer.parseInt(vals[0]));Queue<TreeNode> queue = new LinkedList<>() {{ add(root); }};int i = 1;while(!queue.isEmpty()) {TreeNode node = queue.poll();if(!vals[i].equals("null")) {node.left = new TreeNode(Integer.parseInt(vals[i]));queue.add(node.left);}i++;if(!vals[i].equals("null")) {node.right = new TreeNode(Integer.parseInt(vals[i]));queue.add(node.right);}i++;}return root;}
}

测试结果

 

http://www.yayakq.cn/news/466590/

相关文章:

  • 云速成美站做网站好吗那可以做网站
  • 网站开发还需要兼ie吗如何获取网站是哪个公司制作
  • 网站建设模块是什么意思WordPress图片类源码
  • 网站开发的话术厦门网站建设手机
  • 企业免费网站推广公司qq在线登录聊天
  • 高端大气的的网站学校网络推广方案
  • 自己做网站最新视频教程江门做公司网站
  • 兴义网站seoui培训基地
  • 预付的网站开发费用怎么入账校园门户网站系统建设关键技术
  • 做网站看百度脸色新乐网站建设
  • 台州市建设工程质量检测中心网站视觉营销网站建设规划分析
  • 织梦cms网站模板网站建设艾瑞市场分析
  • 口碑好的宜昌网站建设有空间与域名 怎么做网站
  • 单页网站如何做国外互联网科技网站
  • 搭建广告网站费用网站设计在线crm系统
  • 建一个定制网站要多少钱wordpress 手机加载慢
  • 微网站什么意思语音app开发公司
  • 乐清市建设路小学网站广州大型网站设计公司
  • 网站百度地图代码在虚拟机中如何做二级域名网站
  • 太原百度网站快速优化做网站最主要是那个一类商标
  • 临沂网站开发多少钱怎么搭建免费网站
  • 网站开发主管岗位说明wordpress调用自定义类型文章
  • 怎么做网站搜索两耳清风怎么做网站
  • 技术支持 石家庄网站建设模版ppt
  • 网站建设网站制作价格外贸网站seo
  • 自建网站做外贸网站seo优化培训
  • 潍坊 网站企划服装店网页设计素材
  • 网站建设精英南宁区建设银行招聘网站
  • 做的比较好的货运网站河北企业建网站
  • 网站建设完工确认书wordpress 图片