首页 > 编程语言 >[Python手撕]二叉树的序列化和反序列化

[Python手撕]二叉树的序列化和反序列化

时间:2024-09-24 11:02:21浏览次数:8  
标签:right return nums Python self dfs 二叉树 序列化 root

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Codec:
    def serialize(self, root):

        def dfs(root):
            if root:
                left = dfs(root.left)
                right = dfs(root.right)
                return str(root.val) +","+ left +","+ right
            else:
                return "None"
        return dfs(root)



    def deserialize(self, data):
        nums = iter(data.split(","))
        def dfs(nums):
            val = next(nums)
            if val == "None":
                return None
            else:
                root = TreeNode(val)
                root.left = dfs(nums)
                root.right = dfs(nums)
                return root
        
        root = dfs(nums)

        return root
        

# Your Codec object will be instantiated and called as such:
# ser = Codec()
# deser = Codec()
# ans = deser.deserialize(ser.serialize(root))

标签:right,return,nums,Python,self,dfs,二叉树,序列化,root
From: https://www.cnblogs.com/DCFV/p/18428727

相关文章

  • python画图|多个填充区域
    前述已经学习过两条线之间的填充,以下链接可以直达:python画图|竖向填充两条线之间的区域-CSDN博客现在尝试同时在横向和竖向进行填。输入以下代码:importmatplotlib.pyplotasplt#引入matplotlib模块画图importnumpyasnp#引入numpy模块做数学计算t=np.arange(0.0......
  • 基于卷积神经网络的布料、布匹原料识别系统,resnet50,mobilenet模型【pytorch框架+pytho
       更多目标检测和图像分类识别项目可看我主页其他文章功能演示:基于卷积神经网络的布料、布匹原料识别系统,resnet50,mobilenet【pytorch框架,python,tkinter】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的布料、布匹原料识别系统是在pytorch框架下实现的,这是一个完整的项目......
  • Python入门基础知识总结(赶紧收藏)
    一:简介:Python是一种解释型、面向对象的语言Python的语法和动态类型,以及解释性语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言二:Python基础语法2.1.字面量字面量:在代码中,被写下来的的固定的值,称之为字面量Python中有6种常用的值(数据)的类型**注意:type()**语......
  • 使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的
    文章目录subprocess基础使用subprocess高级使用subprocess多进程subprocess执行情况在深度学习中的应用话不多说了,直接看代码。subprocess基础使用假设我要运行一个名字叫helloworld.py的文件,在主程序如下运行即可。主程序importsubprocessp=subprocess.Pop......
  • Python 入门教程(7)面向对象 | 7.2、成员变量
    文章目录一、成员变量1、成员变量的类型2、实例变量2.1、定义实例变量2.2、访问实例变量2.3、删除实例变量3、类变量3.1、定义类变量3.2、访问类变量3.3、修改类变量4、注意事项5、总结前言:在Python的面向对象编程(OOP)中,变量可以分为两大类:实例变量和类变量。这......
  • Python背记内容-2day
    Python运算符运算符描述[][:]下标,切片**指数~+-按位取反,正负号*/%//乘,除,模,整除+-加,减>><<右移,左移&按位与^|按位异或,按位或<=<>>=小于等于,小于,大于,大于等于==!=等于,不等于isisnot身份运算符innotin成......
  • Python可视化过程中.pictures.add这里一直报错,不明原因
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【沐子山树】问了一个Python可视化的问题,问题如下:importmatplotlib.pyplotasplt#创建一个简单的图表fig,ax=plt.subplots()ax.plot([1,2,3,4])ax.set_ylabel('somenumbers')#保存图表为PNG文件temp......
  • Python背记内容-1day
    变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。硬性规则:规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊......
  • Python——第三方库不能用
    1.问题描述通过pip安装第三方库成功后,在pycharm中在.py文件导入第三方库显示没有这个库。2.解决方法2.1.情况1检查是否在创建项目时开启了虚拟环境。若开启了虚拟环境,项目文件夹会出现如图文件夹:此时有两种方法解决。方法1.直接在Python安装目录中找到需要的库,复制粘贴......
  • Python数据库连接池dbutils详解
    简介在python开发中,如果需要连接MySQL数据库并进行数据操作,可以使用dbutils模块,dbutils是python的一个数据库工具库下载对应模块pipinstallpymysqlpipinstalldbutils连接池配置信息说明使用示例importpymysqlfrompymysql.cursorsimportDictCursorfr......