我和我的朋友正在使用Python 3.1进行编程的学校作业,与IT技术有关。我们正在编写一个二叉树程序,除了在想要按顺序打印所有节点以创建一个句子时出现问题(所有单词按顺序排列在一起),它工作得很好。我们已经在互联网上寻找线索并且已经使用这个小东西工作了两个小时。任何建议/帮助都将是非常棒的。
我们的程序/二叉树:
此外,倒数第二行的结果是“None”,而不是“True”,这很奇怪。
我们的程序/二叉树:
class Treenode:
def __init__(self, it = None, le = None, ri = None):
self.item = it
self.left = le
self.right = ri
class Bintree:
def __init__(self):
self.item = None
self.left = None
self.right = None
def put(self, it = None):
key = Treenode(it)
if self.item == None:
self.item = key
return
p = self.item
while True:
if key.item < p.item:
if p.left == None:
p.left = key
return
else:
p = p.left
elif key.item > p.item:
if p.right == None:
p.right = key
return
else:
p = p.right
else:
return
def exists(self, it):
key = it
p = self.item
if p == key:
return True
while True:
if key < p.item:
if p.left == None:
return False
else:
p = p.left
elif key > p.item:
if p.right == None:
return False
else:
p = p.right
else:
return
def isEmpty(self):
if self.item == None:
return True
else:
return False
def printtree (Treenode):
if Treenode.left != None:
printtree (Treenode.left)
print (Treenode.item)
if Treenode.right != None:
printtree (Treenode.right)
当我们运行程序时,会得到以下类似的输出:"bintree.Treenode object at 0x02774CB0",这不是我们想要的。
我们通过运行以下命令来使用该树:
import bintree
tree = bintree.Bintree()
print(tree.isEmpty()) # should give True
tree.put("solen")
print(tree.isEmpty()) # should give False
tree.put("gott")
tree.put("sin")
tree.put("hela")
tree.put("ban")
tree.put("upp")
tree.put("himlarunden")
tree.put("manen")
tree.put("seglar")
tree.put("som")
tree.put("en")
tree.put("svan")
tree.put("uti")
tree.put("midnattsstuden")
print(tree.exists("visa")) # should give False
print(tree.exists("ban")) # should give True
tree.printtree() # print sorted
此外,倒数第二行的结果是“None”,而不是“True”,这很奇怪。
item
。尝试将Bintree中的名称item
更改为其他名称,例如node
,然后当您尝试在实际上是Bintree而不是Treenode的内容上打印item
属性时,您可能会开始获得有意义的错误。 - Duncan