二叉树的序列化和反序列化(Java)

摘要:
请实现两个函数,它们用于序列化和反序列化二进制树。序列化是将二进制树作为字符串输出。反序列化:根据输出的字符串构建二进制树。

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

序列化就是将二叉树以字符串输出,反序列化:根据自己输出的字符串,构建二叉树。

这里先序遍历输出,且为了方便反序列化,各个节点“,”隔开,且叶子节点后用"#,"隔开

/*

public class TreeNode {

    int val = 0;

    TreeNode left = null;

    TreeNode right = null;

 

    public TreeNode(int val) {

        this.val = val;

 

    }

 

}

*/

public class Solution {

    int index;

    String Serialize(TreeNode root) {

        StringBuilder sb=new StringBuilder();

        if(root==null)

            return "#,";

        sb.append(root.val+",");

        sb.append(Serialize(root.left));

        sb.append(Serialize(root.right));

        return sb.toString();

  }

    TreeNode Deserialize(String str) {

        if(str==null)

            return null;

       

       index=-1;

       

        String[] ss=str.split(",");

        return DeserializeStr(ss);

  }

    public TreeNode DeserializeStr(String[] ss){

        index++;

        TreeNode node=null;

        if(!ss[index].equals("#")){

            node=new TreeNode(Integer.valueOf(ss[index]));

            node.left=DeserializeStr(ss);

            node.right=DeserializeStr(ss);

        }

       

        return node;

    }

}

免责声明:文章转载自《二叉树的序列化和反序列化(Java)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue2+VueRouter2+webpack 构建项目实战(二):目录以及文件结构Oracle笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

rest-framwork官方文档教程(一)

该项目是按照官网quickstart进行的,具体也可查看rest-framework官网: https://www.django-rest-framework.org/tutorial/quickstart/# 一.安装依赖库 此处请确认你的python版本,如果你使用的是python3,那么在pip的时候和进入python命令行的时候要使用pip3和py...

入门系列-缓存机制介绍与使用

ABP框架扩展了ASP.NET Core的分布式缓存系统. Volo.Abp.Caching Package 默认情况下启动模板已经安装了这个包,所以大部分情况下你不需要手动安装. Volo.Abp.Caching是缓存系统的核心包.使用包管理控制台(PMC)安装到项目: Install-Package Volo.Abp.Caching 然后将AbpCa...

C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)

  前言    在XMLSerializer类中,包含了把对象序列化为XML文档和把XML文档反序列化为对象的方法,在创建一个类时,只要在该类的属性上加上自定义属性,XMLSerializer就可以读取这些属性,就可以将它们映射成XML元素和属性了   在XMLSerializer类中,把对象序列化为XML文档用Serialize()方法实现,反序列化通过...

C# 序列化与反序列化Serialization之Json Xml Binary Soap JavaScript序列化

所谓的序列化其实就是把一个内存中的对象信息转化成一个可以持久化保存的形式,方便保存数据库和文件或着用于传输, 序列化的主要作用是不同平台之间进行通信与信息的传递保存等,常用的有序列化有Json Xml Binary Soap JavaScript序列化等,当然我们也可以使用第三方的序列化类库,第三方的序列化类库可以参照网上的,这里不再赘述, 本文主要介绍J...

简单谈谈Netty的高性能之道

传统RPC 调用性能差的三宗罪 网络传输方式问题:传统的RPC 框架或者基于RMI 等方式的远程服务(过程)调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增大之后,同步阻塞IO 会由于频繁的wait 导致IO 线程经常性的阻塞,由于线程无法高效的工作,IO 处理能力自然下降。下面,我们通过BIO 通信模型图看下BIO 通信的弊端:   采用BIO...

C#实现JSON序列化与反序列化

JSON(JavaScript Object Notation)——JavaScript对象表示法,是JavaScript用来处理数据的一种格式,大部分是用来处理JavaScript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用JavaScript进行处理,例如ajax等,是独立于语言和平台的轻量级的数据交换格式。 JSO...