题目描述

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

思路:

其实这个里面包含一个二叉树的序列化而反序列化,这里的序列化指代的是将一颗二叉树没有访问的顺序,然后通过序列化,将这颗二叉树转化为有访问的顺序。所以序列化的时候给我的是一个根节点,然后我通过先序遍历,将这颗树进行序列化,然后转化为一个字符串,空的节点指针则为#表示。

而反序列化,则是给我一个序列化的字符串,然后我将这个字符创通过反序列化转化为一颗二叉树。所以我需要不断的判断这个字符创中的字符是否是#字符。

实现:

/*
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}
}
*/
public class Solution {public int index = -1;String Serialize(TreeNode root) {//序列化主要就是通过将这颗树以一种方式进行顺序化。我们就将这颗二叉树进行先序遍历,得到//访问这颗二叉树的一个访问顺序StringBuffer sb = new StringBuffer();if(root == null){sb.append("#,");return sb.toString();}sb.append(root.val+",");sb.append(Serialize(root.left));sb.append(Serialize(root.right));return sb.toString();}TreeNode Deserialize(String str) {//反序列化二叉树则是需要将一个二叉树组成的字符创进行反序列化,然后得到这个//字符串表示的二叉树index ++;int length = str.length();if(index >= lengtmnh){return null;}String[] strr = str.split(",");TreeNode node = null;while(!strr[index].equals("#")){node = new TreeNode(Integer.valueOf(strr[index]));node.left = Deserialize(str);node.right = Deserialize(str);}return node;}
}

序列化二叉树(思路与实现)相关推荐

  1. 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值

    一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...

  2. [二叉树]序列化二叉树 (剑指offer61)

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 序列化二叉树:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串.需要注意的是,序列化二叉树的过程中,如果遇到空节点,需要以 ...

  3. 剑指 Offer 37. 序列化二叉树

    题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据. 请设计一个算法来实 ...

  4. 《剑指Offer》37:序列化二叉树

    题目 请实现两个函数,分别用来序列化和反序列化二叉树. 分析 我们清楚可以通过前序遍历序列和中序遍历序列创造出一棵二叉树.因此,我们可以先把一棵二叉树序列化成一个前序遍历序列和一个中序遍历序列,然后在 ...

  5. 剑指offer(61)序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目分析 首先拿到题目时候,我先想到的是什么是序列化二叉树?序列化主要就是在前后端交互时候需要转换下,毕竟网络传输的是流式数据(二进制或者文本 ...

  6. 【重点】剑指offer——面试题62:序列化二叉树

    剑指offer--面试题62:序列化二叉树 Solution1: 参考网址:https://www.nowcoder.com/profile/6475323/codeBookDetail?submis ...

  7. 35-剑指 Offer 37. 序列化二叉树

    题目 请实现两个函数,分别用来序列化和反序列化二叉树. 你需要设计一个算法来实现二叉树的序列化与反序列化.这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并 ...

  8. 序列化二叉树(序列化和反序列化)

    题目内容: 解题思路: 一,序列化 所谓序列化就是将二叉树的每个结点按照层序遍历的结果输出,这里面也包含空节点,因为这棵二叉树,不一定是一颗完全二叉树 分析到这里序列化就变得简单多了,唯一的难点在于将 ...

  9. 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图

    目录 一.判断是不是二叉搜索树 1.1 题目 1.2 题解 二.判断是不是完全二叉树 2.1 题目 2.2 题解 三.判断是不是平衡二叉树 3.1 题目 3.2 题解 四.二叉搜索树的最近公共祖先 4 ...

最新文章

  1. 【numpy学习笔记】数组的切片,索引,迭代
  2. [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
  3. matlab中cell的使用
  4. GetWindowRect和GetClientRect的区别详解
  5. 根据权威文献区分梯度上升与梯度下降
  6. 测试Hibernate的最低配置
  7. 如何安装mysql 8.0.12_基于Windows安装MySQL 8.0.12图文教程
  8. CentOS下安装实时检测网络带宽的小工具bmon
  9. immutability因React官方出镜之使用总结分享!
  10. 2020 Fall Berkeley CS61A Hog
  11. win10服务器系统要设置要密码是什么,云服务器win10系统初始密码
  12. 解决nf_conntrack: table full, dropping packet
  13. yocto_evn compile project whithconfigure
  14. Modulation of Lipid Metabolism by Celastrol (文献分享一组-赵倩倩)
  15. BP神经网络原理分析及c++代码实现(下)
  16. python 强类型 弱类型_Python到底是强类型语言还是弱类型语言
  17. 恩格尔注塑机数据采集
  18. 想做Netflix的苹果,可以向猫眼学什么?
  19. 天线基础知识(二)天线角度
  20. JUC(六)--线程等待

热门文章

  1. java线程治理法宝一:线程池
  2. 一道简单的ctf 分析
  3. 无人机通信协议:MavLink协议使用
  4. tensorflow 搭建简单的卷积神经网络,输入二维数组完成分类
  5. JavaScript控制台打印单词
  6. 微信为何折戟美国市场
  7. 你的年货买齐了吗?2023最全年货清单列表
  8. .xsd转Java Bean及生成的.java文件编码格式调整
  9. python 3.4.3 下载安装与环境配置 pip
  10. 简单爬虫+pyecharts分析前途无忧招聘职位数量