<p>你做错了几件事。您没有像kfx提到的那样在<code>puter</code>中返回root。但是<code>puter</code>的输入参数是向后的,<code>puter(newvalue, root.right)</code>应该是<code>puter(root.right, newvalue)</code>,<code>puter(newvalue, root.left)</code>应该是<code>puter(root.left, newvalue)</code>。此代码打印树:</p>
<pre><code>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()
</code></pre>