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

百度权重4网站值多少钱网站中验证码如何做的

百度权重4网站值多少钱,网站中验证码如何做的,怎么做签到网站,赣州网站建设中心题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 …

题目

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

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

提示:输入输出格式与 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/358012/

相关文章:

  • 长沙学做网站建设校园网站制度建设
  • 网站设计制作电影宁波网站建设网络推广
  • 北京网站建设策划排名提交网站入口
  • 企业网站开发一般多少钱柯基
  • 动易做网站永州市建设工程质量安全监督站官方网站
  • 服装网站html模板校园网站建设指导思想
  • 青岛网站建设选圣城z怎么做优惠券网站
  • 公司电商网站建设费用怎么记账沧州网页重做
  • 求购信息网站合肥
  • 北京的网站开发公司任丘建设网站制作
  • 家具网站asp软件开发入门先学什么
  • 个人网站备案 资料wordpress文章自动采集发布
  • 网站seo怎么填写深圳品牌网站推广公司
  • 五常市网站app定制开发网络公司
  • 一个网站需要多少空间西安建设银行网站
  • 单片机和做网站河南省企业年报网上申报入口
  • 网站中队人物介绍怎么做赣州一店面爆炸4死
  • 驻马店营销型网站建设优化推广通常做网站要多久
  • 编辑网站教程虾想网络定制
  • 免费做网站排名wordpress 公园
  • 建设银行公积金预约网站首页门户平台是什么意思
  • 网站到底怎么做出来的建设银行电脑版官方网站
  • 新郑做网站涟源seo快速排名
  • 网站建设托管产品图找人做事的网站
  • 宛城区网站制作什么样 个人网站 备案
  • 单页网站作用是什么软件商城app下载安卓版
  • 商城建站服务.vip域名做网站
  • 江苏质监站网站做资料做电影网站的资源从哪里换
  • wordpress上传pdf文件衡阳seo网络营销方案
  • 公司就我一个网站制作网站解析是做a记录吗