【发布时间】:2020-04-12 17:22:45
【问题描述】:
因为我总是看到树遍历代码打印树内的数据。我开始想知道是否有可能创建一个函数,它将数据返回给我,而不是打印它。 当我试图通过将打印更改为返回来操作打印“定制”功能时,我试图实现我的想法。然而,由于存在递归,事情变得一团糟,它没有按我的意愿工作。 所以我尝试制作一个 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.
它应该将所有内容附加到列表中,而不是替换它们。感谢您的帮助
【问题讨论】:
标签: python data-structures nodes recursive-datastructures