博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer(64):序列化二叉树
阅读量:4287 次
发布时间:2019-05-27

本文共 1336 字,大约阅读时间需要 4 分钟。

题目描述

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

分析

如果二叉树的序列化是从根节点开始,那么对应的而反序列化也是从根节点开始的。因此可以使用二叉树的前序遍历来序列化二叉树,当前序遍历碰到null值是,使用“#”表示,每一个节点的数值之间用“,”隔开。

牛客AC:

/*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; // 节点在序列中的索引 /** * 序列化 * 前序遍历,将二叉树节点的值转为字符序列,null转为“#” * * @param root * @return */ String Serialize(TreeNode root) { StringBuffer s = new StringBuffer(); if (root == null) { s.append("#,"); return s.toString(); } s.append(root.val + ","); s.append(Serialize(root.left)); s.append(Serialize(root.right)); return s.toString(); } /** * 反序列化 * * @param str * @return */ TreeNode Deserialize(String str) { index++; int length = str.length(); if (index >= length) { return null; } String[] nodeSeq = str.split(","); TreeNode pNode = null; if (!nodeSeq[index].equals("#")) { pNode = new TreeNode(Integer.valueOf(nodeSeq[index])); pNode.left = Deserialize(str); pNode.right = Deserialize(str); } return pNode; }}

参考

1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社

转载地址:http://xkxgi.baihongyu.com/

你可能感兴趣的文章
Spring Boot实现分布式微服务电商项目开发实战系列(二)
查看>>
SpringBoot+Dubbo实现分布式微服务开发实战系列(三)
查看>>
Spring Boot实现分布式微服务开发实战系列 -- api接口安全
查看>>
Spring Boot实现分布式微服务开发实战系列 -- AOP切面实现及防SQL注入
查看>>
基于Zookeeper的Curator分布式锁实现
查看>>
来谈谈 Java 反射机制,动态代理是基于什么原理?
查看>>
JVM 内存模型
查看>>
SpringBoot Bean
查看>>
一起探索ThreadLock吧
查看>>
Redis 原理(一):线程IO模型
查看>>
iOS之---cocoaPods的使用详解------
查看>>
iOS之CALayer的使用和position和anchorPoint
查看>>
iOS 网络通信原理和socke通信原理/OSI七层模型
查看>>
iOS即时通信之XMPP框架的使用及原理简介
查看>>
PHP之Apache服务器搭建
查看>>
iOS webDav服务器的搭建
查看>>
iOS openfire服务器的使用
查看>>
iOS ------自动布局之Masonry的使用
查看>>
iOS. UICollectionViewController的使用详解,相册滚动偏移放大
查看>>
iOS之UITableViewController使用详解(一)tableview上移
查看>>