Python - 二叉树 - 无法打印树
Python - Binary tree - unable to print the tree
我刚刚开始在 Python 中编程,所以请注意我可能遗漏了一些东西 basic.I 已经尝试在 Python3 中制作我的第一个二叉树并且一切看起来都很好。下一步是尝试打印我的树(有序),但这样做只会导致两个空格。有什么想法我犯了错误吗?
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()
此致,
您需要 return 来自 puter
函数的值。
def puter(root, newvalue):
...
return root
否则,您的 root
成员将获得默认的 return 值,即 None
。
你有几处错误。您没有像提到的 kfx 那样在 puter
中返回 root。但是您对 puter
的输入参数是倒退的,puter(newvalue, root.right)
应该是 puter(root.right, newvalue)
而 puter(newvalue, root.left)
应该是 puter(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()
我刚刚开始在 Python 中编程,所以请注意我可能遗漏了一些东西 basic.I 已经尝试在 Python3 中制作我的第一个二叉树并且一切看起来都很好。下一步是尝试打印我的树(有序),但这样做只会导致两个空格。有什么想法我犯了错误吗?
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()
此致,
您需要 return 来自 puter
函数的值。
def puter(root, newvalue):
...
return root
否则,您的 root
成员将获得默认的 return 值,即 None
。
你有几处错误。您没有像提到的 kfx 那样在 puter
中返回 root。但是您对 puter
的输入参数是倒退的,puter(newvalue, root.right)
应该是 puter(root.right, newvalue)
而 puter(newvalue, root.left)
应该是 puter(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()