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它确实返回整棵树。