Python 序列化二叉树

本文介绍了如何使用Python实现二叉树的序列化和反序列化操作,详细解析了相关函数的编写,并给出了运行结果,包括序列化的树结构和反序列化后的重建二叉树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#-*- coding:utf-8 -*-
class TreeNode:
    def __init__(self,x):
        self.val = x
        self.left=None
        self.right =None

class Solution:
    def Serialize(self,root):
        retList=[]
        def preOrder(root):
            if root==None:
                retList.append('#')
                return
            retList.append(str(root.val))
            preOrder(root.left)
            preOrder(root.right)
        preOrder(root)
        return ' '.join(retList)

    def Deserialize(self,s):
        retList=s.split()
        def dePreOrder():
            if retList==[]:
                return None
            rootVal=retList[0]
            del retList[0]
            if rootVal=='#':
                return None
            node = TreeNode(int(rootVal))

            leftNode=dePreOrder()
            rightNode=dePreOrder()

            node.left=leftNode
            node.right=rightNode
            return node

        pRoot =dePreOrder()
        return  pRoot

if __name__ == '__main__':
    a=TreeNode(1)
    b=TreeNode(2)
    c=TreeNode(3)
    d=TreeNode(4)
    e=TreeNode(5)
    f=TreeNode(6)
    g=TreeNode(7)
    h=TreeNode(8)
    i=TreeNode(9)
    a.left=b
    a.right=c
    b.left=d
    b.right=e
    c.right=f
    d.left=g
    e.right=h
    f.left=i
    s=Solution()
    print(s.Serialize(a))

运行结果为:
1 2 4 7 # # # 5 # 8 # # 3 # 6 9 # # #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值