为什么这个python程序不能正确运行。我想建立一个二叉树,然后按预先的顺序遍历它。当我调用PreOrder
方法时,它不返回任何内容。
class Node:
def __init__(self, data=None, left=None, right=None):
self.left = left
self.right = right
self.data = data
class BTree:
def __init__(self, root):
self.root = root
def CreateTree(self, root):
self.root.data = raw_input("Enter data,'*' means empty: ")
if self.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):
if self.root != None:
if self.root.data != '*':
print self.root.data,
PreOrder(self, self.root.left)
PreOrder(self, self.root.right)
if __name__ == '__main__':
t = Node()
bt = BTree(t)
bt.CreateTree(t)
bt.PreOrder(t)
您的
CreateTree
方法根本没有提到参数root
。此方法始终在self.root
上操作。类似的事情可能会奏效:
PreOrder
是类BTree
的方法,您可能需要更改递归调用,如下所示:如果您只使用保存在
__init__
中的self.root
,那么也不需要将root
传递给CreateTree
因为您正在
CreateTree
函数中设置self.root.data = '*'
这个self.root.data = raw_input("Enter data,'*' means empty: ")
。要终止输入提示,最后必须输入'*'
。所以self.root.data
的最后一个值是'*'。试试这个
还有这个
知道哪里出了问题。
相关问题 更多 >
编程相关推荐