Так как я всегда видел коды обхода дерева, печатающие данные внутри дерева. Я начал задаваться вопросом, возможно ли создать функцию, которая возвращает мне данные, а не печатает их. Я пытался реализовать свои мысли, пытаясь манипулировать функцией печати «Custom made», изменяя печать на возвратную. однако, поскольку была рекурсия, все стало грязно, и это не сработало, как я хотел. Поэтому я попытался создать self.list = [], а затем добавить в него каждый узел и его данные. он также не работал с использованием рекурсии.
это код, который я пробовал:
class BinaryTree():
def __init__(self, item,value):
self.left = None
self.right = None
self.item = item
self.value = value
self.list=[]
def insert(self, item,value):
if self.value:
if value < self.value:
if self.left is None:
self.left = BinaryTree(item,value)
else:
self.left.insert(item,value)
elif value > self.value:
if self.right is None:
self.right = BinaryTree(item,value)
else:
self.right.insert(item,value)
elif value == self.value:
if self.left is None:
self.left = BinaryTree(item,value)
else:
self.left.insert(item,value)
else:
self.item=item
self.value=value
def PrintTree(self):
if self.right:
self.right.PrintTree()
print(["item : " + self.item, "value : " + self.value]),
if self.left:
self.left.PrintTree()
#Custom made functions
def print(self):
if self.right:
self.right.print()
new = {self.item,self.value}
self.list.append(new)
print(self.list)
if self.left:
self.left.print()
Root = BinaryTree('car', 18 )
Root.insert('truck',23)
Root.insert('airplane',99)
Root.insert('bus',17)
Root.print() # during recursion gives me everything, however the items are not saved permanently in self.list
print("\n")
print(Root.list) # should give me everything, but gives me only root.
Он должен добавлять все в список, а не заменять их. буду признателен за помощь