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

ps做网站框架搭建爱战网关键词挖掘查询工具

ps做网站框架搭建,爱战网关键词挖掘查询工具,wordpress 在线教学,我是做颗粒在什么网站上题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 …

题目

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

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

提示:输入输出格式与 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.yidumall.com/news/97234.html

相关文章:

  • 游戏网站设计百度竞价什么意思
  • 蔡家坡网站开发百度浏览器网址链接
  • 建设部质量监督官方网站郑州网站策划
  • 网站做系统下载谷歌seo网站建设
  • 中国建设教育协会的是假网站吗广告公司推广文案
  • 南山做网站公司大数据营销系统多少钱
  • 建网站开发国外客户日照seo优化
  • 网站 业务范围网站制作免费
  • wordpress hookseo优化网站优化
  • 广东seo外包服务网站关键词优化软件
  • 成都市政府门户网站建设如何做网站设计
  • 郴州必去三个景点关键词整站优化公司
  • 网站pv多少可以aso优化技术
  • 营销网站售后调查友情链接大全
  • 淮南建设厅网站推广网上国网
  • 开源房产网站源码南宁网络推广培训机构
  • 网站备案承若怎么写深圳营销策划公司十强
  • 做童装批发网站推广类软文
  • 网站开发工程师工作职责百度热搜榜小说排名
  • 线上广告代理平台seo入门到精通
  • 绍兴市科信建设工程检测中心网站yahoo搜索引擎
  • 垂直网站建设步骤网络营销招聘
  • 政府建设网站计划书企业邮箱账号
  • 深圳好的高端企业网站建设公司全国知名网站排名
  • 重庆模板网站建设青岛推广优化
  • 怎么做自己的网站?上海关键词优化排名哪家好
  • dede网站头部和底部不能调用太原seo代理商
  • 绥化网站建设公司广告联盟骗局
  • 上海市政府一网官方网站品牌营销战略
  • 合肥网站建设代理商微信朋友圈软文大全