题目描述

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

解题思路

使用前序遍历,将遇到的结点添加到字符串中,遇到null则将一个#添加要序列化字符串中。反序列化时,每次读取根结点,然后读取其左结点,遇到#(null)时,返回上层。

实现

/*树结点定义*/
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}
/*实现*/
public class Solution {String Serialize(TreeNode root) {StringBuilder sb = new StringBuilder();serialize(root, sb);return sb.toString();}private void serialize(TreeNode root, StringBuilder sb) {if (root == null) {sb.append("#,");return;}sb.append(root.val + ",");serialize(root.left, sb);serialize(root.right, sb);}private class Result{TreeNode node;int pos;Result(TreeNode node, int pos){this.node = node;this.pos = pos;}}TreeNode Deserialize(String str) {if (str == null || str.length() <= 0) return null;String[] strs = str.split(",");Result re = deserialize(strs, 0);return re.node;}private Result deserialize(String[] str, int i) {TreeNode root = null;if (i < str.length - 1){if ("#".equals(str[i])) return new Result(null, i+1);root = new TreeNode(Integer.parseInt(str[i]));Result l = deserialize(str, i + 1);root.left = l.node;Result r = deserialize(str, l.pos);root.right = r.node;return new Result(root, r.pos);}return new Result(root, i+1);}
}

转载于:https://www.cnblogs.com/ggmfengyangdi/p/5828616.html

剑指Offer_61_序列化二叉树相关推荐

  1. 2021-09-01剑指offer37序列化二叉树

    tu 图中所给的序列是采用前序遍历来实现二叉树的序列的. class Codec {public:// Encodes a tree to a single string.string seriali ...

  2. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  3. 剑指offer07.重建二叉树

    剑指offer07重建二叉树 题目 : 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 示例 : Input: preo ...

  4. 【LeetCode】剑指 Offer 34. 二叉树中和为某一值的路径

    [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 文章目录 [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 package offer;import ja ...

  5. 【LeetCode】剑指 Offer 27. 二叉树的镜像

    [LeetCode]剑指 Offer 27. 二叉树的镜像 文章目录 [LeetCode]剑指 Offer 27. 二叉树的镜像 一.递归法 二.辅助栈(或队列) 一.递归法 根据二叉树镜像的定义,考 ...

  6. 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

    文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...

  7. JZ27 [剑指 Offer 27] 二叉树的镜像

    二叉树的镜像 Category Difficulty Likes Dislikes lcof Easy (79.61%) 311 - 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: ...

  8. 剑指offer:二叉树序列化与反序列化 - Python

    转载自:https://blog.csdn.net/u010005281/article/details/79787278 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 序列化 ...

  9. 《剑指offer》二叉树镜像

    剑指offer简单题,但是能一下写对也需要小心考虑细节. 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 /   / 5 7 9 11 ...

最新文章

  1. 【Docker】容器与系统时间同步
  2. SGU 0438 The Glorious Karlutka River =) 动态流
  3. 走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)...
  4. 玩转oracle 11g(15):命令学习3
  5. C++学习之路 | PTA乙级—— 1056 组合数的和 (15 分)(精简)
  6. (已解决)小程序 request:fail ssl hand shake error 安卓端websocket报错
  7. 小米MIX 4内部代号曝光:“众神之王”三季度降临
  8. mysql的四个默认数据库是什么版本,MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。...
  9. 小技巧 ----- Java算法题标准模版
  10. 罗永浩:6亿债务,已还了4个亿;Python 3.9指日可待|极客头条
  11. Python BFS 提取二值图联通域
  12. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  13. 数字营销卷得再狠,「阿琉克斯之踵」不能忽视
  14. 自动控制系统的典型环节
  15. Java实现从第三方系统单点登录到致远OA
  16. Windows Hello安装和体验
  17. Python|如何正确安装PaddleOCR
  18. 单片机原理与应用-51
  19. 水库安全监测自动化系统解决方案
  20. 记一次无意间发现某学校图书检索系统的变量覆盖漏洞

热门文章

  1. yolo opencv_如何使用Yolo,SORT和Opencv跟踪足球运动员。
  2. 使用Xcap发送网络数据包
  3. 全志A33-串口的使用
  4. 有些00后存款是90后2倍,90后怎么看?
  5. NFS PersistentVolume - 每天5分钟玩转 Docker 容器技术(151)
  6. vep文件如何转换mp4_如何将DVD的vob视频格式转换成mp4格式
  7. python特征工程插件_手把手教你用Python实现自动特征工程
  8. 网络连接异常、网站服务器失去响应_网站常见故障解决办法
  9. Unity内实现Android APK版本更新
  10. LeetCode 面试题57 - II(剑指offer) 和为s的连续正数序列