【Python】使用pickle实现多叉树的序列化和读取

【Python】使用pickle实现多叉树的序列化和读取

方法

pickle.dump()
pickle.load()

步骤


首先建立一个多叉树节点类

class Node:

    def __init__(self, name):
        self.name = name
        self.children = []

    def insert(self, childNode):
        self.children.append(childNode)

建立一个多叉树,结构如下

A
D
C
B
F
E
H
G

代码如下:

A = Node('A')
B = Node('B')
C = Node('C')
D = Node('D')
E = Node('E')
F = Node('F')
G = Node('G')
H = Node('H')

A.insert(B)
A.insert(C)
A.insert(D)
B.insert(E)
B.insert(F)
F.insert(G)
F.insert(H)

为了实现多叉树的可视化,写一个递归方法到节点类中

    def show(self, level):
        print('|--|'*level, self.name)
        for eachChild in self.children:
            eachChild.show(level+1)

调用方法:

A.show(1)

结果如下:

|--| A
|--||--| B
|--||--||--| E
|--||--||--| F
|--||--||--||--| G
|--||--||--||--| H
|--||--| C
|--||--| D

采用pickle模块实现对多叉树的序列化,首先导包:

import pickle

首先是序列化操作,建立一个文件直接传入一个A节点:

with open('hehe.txt', 'wb') as file:
    pickle.dump(A, file)

注意必须是二进制写入。

反序列化方法如下,同样是二进制,用一个变量去接收:

with open('hehe.txt', 'rb') as file:
    hehe = pickle.load(file)

把结果show一下:

hehe.show(1)

结果如下:

|--| A
|--||--| B
|--||--||--| E
|--||--||--| F
|--||--||--||--| G
|--||--||--||--| H
|--||--| C
|--||--| D

可以发现采用pickle模块可以直接将节点对象及其子节点一起序列化并存储,非常好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值