转载自:https://blog.csdn.net/u010005281/article/details/79787278

题目描述

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

解题思路

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

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

剑指offer:二叉树序列化与反序列化 - Python相关推荐

  1. 【LeetCode】剑指 Offer 37. 序列化二叉树

    [LeetCode]剑指 Offer 37. 序列化二叉树 文章目录 [LeetCode]剑指 Offer 37. 序列化二叉树 package offer;import java.util.Link ...

  2. 剑指offer 矩阵中的路径 @python

    剑指offer 矩阵中的路径 @python 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向 ...

  3. 《剑指offer》面试题的Python实现

    所属网站分类: 面试经典 > python 作者:gg 链接: http://www.pythonheidong.com/blog/article/464/ 来源:python黑洞网 www.p ...

  4. C#刷剑指Offer | 二叉树中和为某一值的路径

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  5. 剑指offer 二叉树的深度

    剑指offer 牛客网 二叉树的深度 # -*- coding: utf-8 -*- """ Created on Wed Apr 10 09:29:36 2019@au ...

  6. 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值

    一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...

  7. 《剑指offer》序列化二叉树

    题目:请实现两个函数,分别用来序列化和反序列化二叉树 解析:首先存储二叉树的先序遍历,遇到null就添加"#," 否则添加"值,".构件二叉树的时候也是用先序遍 ...

  8. 剑指 Offer 37. 序列化二叉树

    题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据. 请设计一个算法来实 ...

  9. [剑指offer] 61. 序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目很差,没有测试样例. 默认是先序遍历序列化. class Solution {public:vector<int> vec;v ...

最新文章

  1. HTML5学习路线资料,HTML5前端面试的技术栈
  2. Delphi命名规范
  3. python import from class_Python: import vs from (module) import function(class) 的理解
  4. 调整了canvas的高度页面变化后还原_Python GUI编程入门(25)-移动Canvas对象
  5. s5-11 距离矢量路由选择协议
  6. instanceof java list_Java:Instanceof和泛型
  7. android 开发时遇到的环境问题3--eclipse整个项目工程报错
  8. EnforceLearning-主动强化学习
  9. Qt学习笔记-编写简易的音乐播放器
  10. 大数据管理:构建数据自己的“独门独院”
  11. [ZJOI2007]仓库建设
  12. 黄聪:解决WordPress的函数mb_strimwidth截断中文产生乱码的问题
  13. 从苏宁电器到卡巴斯基第03篇:我的本科时光(下)
  14. XML Schema快速入门(三)语法之复杂类型
  15. 地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
  16. 福大软工1816 · 团队现场编程实战(抽奖系统)
  17. 数值计算——线性最小二乘问题
  18. 在linux系统里面进行rar文件的解锁
  19. Kafka(9)副本(leader、flower、isr说明)
  20. GARCH-QR非线性回归(GQNR)交易模型(初稿)

热门文章

  1. ADF4002【分频器】(康威)
  2. 华为OD机试注意事项,来自已考人员的经验
  3. drawImage 详解
  4. 演讲稿之心理+日常演讲
  5. 华东理工《文献检索》MOOC (1)---精通中国知网CNKI
  6. javascript ybmiaov
  7. TPAMI 2022 | 利用子图同构计数提升图神经网络的表达能力
  8. php研究成果,PHP session 与 cookie 自己的研究成果
  9. python爬虫学习(第三爬)
  10. Python编写小工具之统计演员票房排行榜