<p>因为您正在<code>CreateTree</code>函数中设置<code>self.root.data = '*'</code>
这个<code>self.root.data = raw_input("Enter data,'*' means empty: ")</code>。要终止输入提示,最后必须输入<code>'*'</code>。所以<code>self.root.data</code>的最后一个值是'*'。</p>
<p>试试这个</p>
<pre><code> print self.root.data
root.data = raw_input("Enter data,'*' means empty: ")
print self.root.data
if root.data == '*':
return
</code></pre>
<p>还有这个</p>
<pre><code> def CreateTree(self,root):
print self.root.data
root.data = raw_input("Enter data,'*' means empty: ")
print self.root.data
if root.data == '*':
return
self.root.left = Node()
self.root.right = Node()
self.CreateTree(self.root.left)
self.CreateTree(self.root.right)
def PreOrder(self, root):
print root
print self.root
print self.root.data
if self.root != None:
if self.root.data != '*':
print self.root.data,
PreOrder(self, self.root.left)
PreOrder(self, self.root.right)
else:
print 'what the hell'
if __name__ == '__main__':
t = Node(10,Node(),Node())
print t.data
bt = BTree(t)
bt.CreateTree(t)
bt.PreOrder(t)
</code></pre>
<p>知道哪里出了问题。</p>