Я и мой друг занимаемся в школе программированием на Python 3.1 и ОЧЕНЬ застряли.Мы программируем двоичное дерево, и оно работает нормально, за исключением случаев, когда мы хотим напечатать все узлы в порядке, таким образом, чтобы создать предложение (все слова в порядке сразу после друг друга в строке).Мы искали по всему Интернету подсказки о том, как действовать, и мы работали с этой мелочью около двух часов.Любой совет / помощь будет потрясающим.
Наша программа / Двоичное дерево:
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 в 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», что странно.