剑指offer:二叉树序列化与反序列化 - Python
转载自: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相关推荐
- 【LeetCode】剑指 Offer 37. 序列化二叉树
[LeetCode]剑指 Offer 37. 序列化二叉树 文章目录 [LeetCode]剑指 Offer 37. 序列化二叉树 package offer;import java.util.Link ...
- 剑指offer 矩阵中的路径 @python
剑指offer 矩阵中的路径 @python 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向 ...
- 《剑指offer》面试题的Python实现
所属网站分类: 面试经典 > python 作者:gg 链接: http://www.pythonheidong.com/blog/article/464/ 来源:python黑洞网 www.p ...
- C#刷剑指Offer | 二叉树中和为某一值的路径
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- 剑指offer 二叉树的深度
剑指offer 牛客网 二叉树的深度 # -*- coding: utf-8 -*- """ Created on Wed Apr 10 09:29:36 2019@au ...
- 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值
一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...
- 《剑指offer》序列化二叉树
题目:请实现两个函数,分别用来序列化和反序列化二叉树 解析:首先存储二叉树的先序遍历,遇到null就添加"#," 否则添加"值,".构件二叉树的时候也是用先序遍 ...
- 剑指 Offer 37. 序列化二叉树
题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据. 请设计一个算法来实 ...
- [剑指offer] 61. 序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目很差,没有测试样例. 默认是先序遍历序列化. class Solution {public:vector<int> vec;v ...
最新文章
- HTML5学习路线资料,HTML5前端面试的技术栈
- Delphi命名规范
- python import from class_Python: import vs from (module) import function(class) 的理解
- 调整了canvas的高度页面变化后还原_Python GUI编程入门(25)-移动Canvas对象
- s5-11 距离矢量路由选择协议
- instanceof java list_Java:Instanceof和泛型
- android 开发时遇到的环境问题3--eclipse整个项目工程报错
- EnforceLearning-主动强化学习
- Qt学习笔记-编写简易的音乐播放器
- 大数据管理:构建数据自己的“独门独院”
- [ZJOI2007]仓库建设
- 黄聪:解决WordPress的函数mb_strimwidth截断中文产生乱码的问题
- 从苏宁电器到卡巴斯基第03篇:我的本科时光(下)
- XML Schema快速入门(三)语法之复杂类型
- 地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
- 福大软工1816 · 团队现场编程实战(抽奖系统)
- 数值计算——线性最小二乘问题
- 在linux系统里面进行rar文件的解锁
- Kafka(9)副本(leader、flower、isr说明)
- GARCH-QR非线性回归(GQNR)交易模型(初稿)