Python-二叉树-无法打印树
我刚刚开始用Python编程,所以请注意,我可能错过了一些基本的东西。我尝试用Python 3创建我的第一个二叉树,一切都很好。下一步是尝试打印我的树(按顺序),但这样做只会导致两个空格。有没有想过我犯了什么错误Python-二叉树-无法打印树,python,tree,binary-tree,nodes,Python,Tree,Binary Tree,Nodes,我刚刚开始用Python编程,所以请注意,我可能错过了一些基本的东西。我尝试用Python 3创建我的第一个二叉树,一切都很好。下一步是尝试打印我的树(按顺序),但这样做只会导致两个空格。有没有想过我犯了什么错误 class Node: def __init__(self, newvalue): self.left=None self.right=None self.newvalue=newvalue class Tree: d
class Node:
def __init__(self, newvalue):
self.left=None
self.right=None
self.newvalue=newvalue
class Tree:
def __init__(self):
self.root=None
def put(self, newvalue):
self.root=puter(self.root, newvalue)
def write(self):
writer(self.root)
print("\n")
def writer(root):
if root != None:
writer(root.left)
print(root.newvalue)
writer(root.right)
def puter(root, newvalue):
if root == None:
root = Node(newvalue)
else:
if newvalue < root:
if root.left != None:
puter(newvalue, root.left)
else:
root.left=Node(newvalue)
else:
if root.right !=None:
puter(newvalue, root.right)
else:
root.right = Node(newvalue)
tree = Tree()
tree.put("bird")
tree.put("snake")
tree.put("lion")
tree.put("elephant")
tree.put("snail")
tree.write()
类节点:
定义初始化(self,newvalue):
self.left=无
self.right=无
self.newvalue=newvalue
类树:
定义初始化(自):
self.root=None
def put(自我,新值):
self.root=puter(self.root,newvalue)
def写入(自):
编写器(self.root)
打印(“\n”)
def写入程序(根):
如果根!=无:
writer(root.left)
打印(root.newvalue)
writer(root.right)
定义计算机(根,新值):
如果根=无:
根=节点(newvalue)
其他:
如果newvalue
非常感谢,您需要从
计算机
函数返回一个值
def puter(root, newvalue):
...
return root
否则,您的
root
成员将被分配默认的返回值,即None
您有两个错误。您没有像kfx提到的那样在计算机中返回root。但是您对计算机的输入参数是向后的,计算机(newvalue,root.right)
应该是计算机(root.right,newvalue)
和计算机(newvalue,root.left)
应该是计算机(root.left,newvalue)
。此代码打印树:
class Node:
def __init__(self, newvalue):
self.left = None
self.right = None
self.newvalue = newvalue
class Tree:
def __init__(self):
self.root = None
def put(self, newvalue):
self.root = puter(self.root, newvalue)
def write(self):
writer(self.root)
print("\n")
def writer(root):
if root != None:
writer(root.left)
print(root.newvalue)
writer(root.right)
def puter(root, newvalue):
if root == None:
root = Node(newvalue)
else:
if newvalue < root:
if root.left != None:
puter(root.left, newvalue)
else:
root.left=Node(newvalue)
else:
if root.right !=None:
puter(root.right, newvalue)
else:
root.right = Node(newvalue)
return root
tree = Tree()
tree.put("bird")
tree.put("snake")
tree.put("lion")
tree.put("elephant")
tree.put("snail")
tree.write()
类节点:
定义初始化(self,newvalue):
self.left=无
self.right=无
self.newvalue=newvalue
类树:
定义初始化(自):
self.root=None
def put(自我,新值):
self.root=计算机(self.root,newvalue)
def写入(自):
编写器(self.root)
打印(“\n”)
def写入程序(根):
如果根!=无:
writer(root.left)
打印(root.newvalue)
writer(root.right)
定义计算机(根,新值):
如果根=无:
根=节点(newvalue)
其他:
如果newvalue
啊,我完全错过了那个。谢谢太棒了,我知道我在哪里犯了错误。非常感谢你的帮助,坚持下去!