题目描述

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

解题思路

序列化二叉树:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串。需要注意的是,序列化二叉树的过程中,如果遇到空节点,需要以某种符号(这里用#)表示。以下图二叉树为例,序列化二叉树时,需要将空节点也存入字符串中。
这里写图片描述 ——–> 这里写图片描述
序列化可以基于先序/中序/后序/按层等遍历方式进行,这里采用先序遍历的方式实现,字符串之间用 “,”隔开。代码如下:

def Serialize(self, root):if not root:return '#'return str(root.val) +',' + self.Serialize(root.left) +','+ self.Serialize(root.right)

反序列化二叉树:根据某种遍历顺序得到的序列化字符串,重构二叉树。具体思路是按前序遍历“根左右”的顺序,根节点位于其左右子节点的前面,即非空(#)的第一个节点是某子树的根节点,左右子节点在该根节点后,以空节点#为分隔符。代码如下:

def Deserialize(self, s):list = s.split(',')return self.deserializeTree(list)def deserializeTree(self, list):if len(list)<=0:return Noneval = list.pop(0)root = Noneif val != '#':root = TreeNode(int(val))root.left = self.deserializeTree(list)root.right = self.deserializeTree(list)return root

[二叉树]序列化二叉树 (剑指offer61)相关推荐

  1. leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer

    题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...

  2. JAVA实现重建二叉树(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  3. JAVA实现从上往下打印二叉树(《剑指offer》)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. import java.util.ArrayList; import java.util.LinkedList;/** public ...

  4. java 重建二叉树_【剑指offer】 Java实现重建二叉树

    /** * @Author: DaleyZou * @Description: 重建二叉树 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. * 假设输入的前序遍历和中序遍历的结果中都不 ...

  5. 【打卡第243道】【二叉树】【剑指Offer】:JZ8 二叉树的下一个结点

    1.题目描述 2.算法分析 既然是找中序遍历的某一个结点的下一个结点,其实思路已经很明确了.     1.将二叉树中序遍历,存储到集合中.前提,首先找到根节点.根节点可以根据指向父节点的next指针找 ...

  6. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  7. 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)

    297. 二叉树的序列化与反序列化(剑指 Offer 37. 序列化二叉树)(剑指 Offer II 048. 序列化与反序列化二叉树) class Codec:def serialize(self, ...

  8. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  9. 【剑指Offer学习】【全部面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...

最新文章

  1. 使用Vue的filters(本地)或filter(全局)过滤常用数据类型
  2. HDU 1877 另一个版本 A+B
  3. Exchange 2007邮件服务器
  4. 怎么关闭win10的自动更新
  5. 首次揭秘:腾讯TDSQL分布式多级一致性数据库系统技术
  6. Visual studio之C# 利用Settings保存COM口配置信息
  7. [转] 值得推荐的C/C++框架和库
  8. C# 文本操作类 Trim() 和Replace()的用法小例子
  9. MySQL基础总结,认真看完这篇就够了!!!
  10. archlinux安装个简单桌面icewm
  11. spring Beans初始化及配置
  12. Dynamics AX2012 根据表字段查找对应的字段值
  13. 基于Web的svg编辑器(1)——撤销重做功能
  14. 握奇ukey没证书_握奇USB KEY
  15. Boost电路调试心得
  16. 转:天下互联CEO张向宁:傻目录不是搜索引擎
  17. 显示和隐藏一个div的问题
  18. nn.Softmax(dim) 的理解
  19. 遗传算法实现图像分割(MATLAB)
  20. 卖给高通之后的CSR的现状和未来

热门文章

  1. Android学习笔记(一)
  2. java jframe全屏_Java-将JFrame设置为全屏时,屏幕变黑
  3. 分布式消息通信ActiveMQ原理-消费消息策略-笔记
  4. HPU 第三次积分赛:阶乘之和(水题)
  5. WPF:Graphics绘图--Shapes形状
  6. ICG游戏:尼姆游戏异或解法的证明
  7. git 添加review的相关操作
  8. MessageBox、::MessageBox 、AfxMessageBox三者的区别
  9. 理解Prefix.pch文件
  10. Matlab命令集--常用字符串函数