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

二叉树序列化与反序列化

在这里插入图片描述

在实际开发中,经常需要将二叉树保存到文件或通过网络传输。这就需要将树结构转换为字符串(序列化),以及从字符串恢复树结构(反序列化)。

今天就来剖析这个序列化和反序列化的问题。


🚀解题思路

🟦 用 前序遍历(根→左→右) 把树“拍扁”成字符串
🟦 用 # 表示空节点
🟦 反序列化时,递归按顺序读回来

这样就能保证序列化和反序列化是一一对应的。


💻 完整代码

public class Codec {// 序列化:将二叉树转成字符串public String serialize(TreeNode root) {StringBuilder builder = new StringBuilder();f(root, builder);return builder.toString();}// 前序遍历构建字符串void f(TreeNode root, StringBuilder builder) {if (root == null) {builder.append("#,");  // 用#表示null节点} else {builder.append(root.val + ",");  // 当前节点值f(root.left, builder);           // 递归左子树f(root.right, builder);          // 递归右子树}}// 反序列化:将字符串还原为二叉树public TreeNode deserialize(String data) {String[] vals = data.split(",");cnt = 0;return g(vals);}// 当前解析到数组的第几个元素public static int cnt;// 递归构建树TreeNode g(String[] vals) {String cur = vals[cnt++];if (cur.equals("#")) {return null;  // 空节点} else {TreeNode head = new TreeNode(Integer.valueOf(cur));head.left = g(vals);head.right = g(vals);return head;}}
}

如果觉得有帮助,欢迎点赞、关注、转发~

http://www.dtcms.com/a/555079.html

相关文章:

  • 焦作网站建设费用社交类网站开发需求
  • 杭州外贸网站建设公司申跃网站建设类型有哪些方面
  • 做视频网站 视频放在哪里找延庆营销型网站建设
  • 物联网的核心和基础是什么短视频seo询盘系统
  • XHR 创建对象
  • 个人网站建设软件合肥建站方案
  • 【Docker】P4 Docker 网络:掌握 Docker 自定义网络,玩转应用集群
  • 莞城网站制作如何看一个站点是不是有wordpress
  • 荆门网站建设公司WordPress百度智能小程序
  • 修改网站源码连接数据库怎么做网站关键词优化推荐贵阳方舟网络6
  • 辽宁网站建设墨子网站关闭多久排名会下降
  • BLDC双电机六步换相控制学习文档
  • 排序算法:高效数据处理的核心
  • 网站架构设计师工资水平自助建网站系统源码
  • 网站建设go华为网站建设和阿里云哪个好
  • 宁波规划建设局网站顺企网怎么发布公司信息
  • 校园网站建设系统设计做网站去什么公司
  • 房产网站开发报价山西seo基础教程
  • 网站建设方案预计效果教育网站制作视频
  • python使用ffmpeg对视频进行转码
  • 做网站 注意外贸网站源码php
  • 计算机图形学·2 图像形成
  • 简单了解一下哈希表(C++)
  • 如何在旅游网站上做攻略唐山官方网站建设
  • 金属材料东莞网站建设浙江企业黄页大全
  • 做销售在哪些网站注册好制作网站软件排行榜
  • 网站备案能查到什么东西怎么提高自己网站的知名度
  • 小说网站论文摘要论坛做网站好吗
  • 西局网站建设怎样进入建设通网站
  • 备案的网站可以攻击吗盐城公司网站建设