Сериализация дерева во вложенный список с использованием Python - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть класс бинарного дерева, подобный этому:

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

Или есть общий способ сериализации в смешанную вложенную структуру? Например, {[]} или [{}]?

1 Ответ

0 голосов
/ 23 сентября 2011

как метод BinaryTree:

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}

и как метод класса BinaryTree:

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)
...