У меня есть древовидный класс, в котором класс инициализируется атрибутами data, left и right. в том же классе у меня есть метод "сохранения". Я использую список как очередь. Я пытаюсь создать метод «сохранения», который принимает только один аргумент «данные». Цель этого метода сохранения - исключить из моего списка, проверить этот узел, чтобы увидеть, пуст ли он, и если это так, он сохраняет мои данные там. В противном случае он помещает в список 2 дочерних элемента этого узла. Целью этого является сохранение данных в дереве в порядке уровней. Поскольку класс инициализируется, в дереве всегда есть как минимум 1 элемент, который является узлом root.
Проблема, с которой я постоянно сталкиваюсь, заключается в том, что всякий раз, когда я добавляю self.data (узел root , а не данные, которые я сейчас пытаюсь добавить) в мой список в начале метода сохранения, он сохраняет только данные там. и, очевидно, когда я затем пытаюсь добавить левый и правый дочерние элементы этого int, я получаю сообщение об ошибке, потому что у int нет левых или правых атрибутов.
Мне интересно, как сохранить узел в списке вместо данные на узле.
class Tree():
aqueue = []
def __init__(self, item):
self.item = item
self.leftchild = None
self.rightchild = None
self.aqueue.append(self.item)
def add(self, newitem):
temp = self.myqueue.pop(0)
if temp is None:
temp = Tree(newitem)
else:
self.aqueue.append(temp.leftchild)
self.aqueue.append(temp.rightcild)
temp.add(newitem)
self.aqueue.clear() #this is meant to clear queue of all nodes after the recursions are complete
self.aqueue.append(self.item) #this is meant to return the root node to the queue so that it is the only item for next time