<p>插入可能有点棘手,特别是因为函数是树本身的一部分。因此,在树上调用insert函数,但是指定一个起始点。这默认为root,因此您可以在调用函数时保留参数。在</p>
<p>另外,我认为您对<code>self</code>在函数中是如何工作的有点不清楚。您不能将它作为参数传递给函数,这似乎是您所做的。在</p>
<pre><code>class TreeNode:
def __init__(self, data):
self.data = data
self.rLink = None
self.lLink = None
class BinaryTree:
def __init__(self):
self.root = None
def AddNode(self, data, node=None):
if not node :
node = self.root
if self.root is None:
self.root = TreeNode(data)
else:
if data < node.data:
if node.lLink is None:
node.lLink = TreeNode(data)
else:
self.AddNode(data, self.root.lLink)
else:
if node.rLink is None:
node.rLink = TreeNode(data)
else:
self.AddNode(data, self.root.rLink)
def InOrder(self, head):
if head.lLink is not None:
self.InOrder(head.lLink)
print head.data,
if head.rLink is not None:
self.InOrder(head.rLink)
myTree = BinaryTree()
myTree.AddNode(14)
myTree.AddNode(15)
myTree.AddNode(18)
myTree.InOrder(myTree.root)
</code></pre>
<p>用顺序遍历测试insert函数是最好的方法。在</p>
<p>这应该行得通。如果每次都使用<code>self.root.lLink</code>,则不会从树上下来。
或者,您可以再编写一行代码来检查输出是否确实是按升序排列的。在</p>