Serialization 使用python将树序列化为嵌套列表
我有一个二叉树类,如下所示:Serialization 使用python将树序列化为嵌套列表,serialization,tree,nested,Serialization,Tree,Nested,我有一个二叉树类,如下所示: class BinaryTree: def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right 现在我面临的任务是将此结构序列化到嵌套列表中。顺便说一句,我想到了一个从左到右的遍历函数: def binary_tree(tree): if tree: for node_dat
class BinaryTree:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
现在我面临的任务是将此结构序列化到嵌套列表中。顺便说一句,我想到了一个从左到右的遍历函数:
def binary_tree(tree):
if tree:
for node_data in binary_tree(tree.left):
yield node_data
for node_data in binary_tree(tree.right):
yield node_data
或者有一种通用的方法将其序列化为混合嵌套结构?例如,{[]}或[{}]?作为
二进制树的方法:
def to_dict(self):
data = self.data
left = self.left
if left is not None:
left = left.to_dict()
right = self.right
if right is not None:
right = right.to_dict()
return {'data':data, 'left':left, 'right':right}
def from_dict(cls, D):
data = D['data']
left = D['left']
if left is not None:
left = cls.from_dict(left)
right = D['right']
if right is not None:
right = cls.from_dict(right)
return cls(data, left, right)
作为二进制树的类方法
:
def to_dict(self):
data = self.data
left = self.left
if left is not None:
left = left.to_dict()
right = self.right
if right is not None:
right = right.to_dict()
return {'data':data, 'left':left, 'right':right}
def from_dict(cls, D):
data = D['data']
left = D['left']
if left is not None:
left = cls.from_dict(left)
right = D['right']
if right is not None:
right = cls.from_dict(right)
return cls(data, left, right)
但这只返回一个节点。是否可以将整棵树作为嵌套数据结构返回?@georgehu它确实返回整棵树。