Есть некоторые ошибки и застрял в этой проблеме некоторое время. Я читал слова из файла, как показано ниже, но проблема заключается в операторах if. он не печатает существующее значение, оно просто сохраняет печать всех значений на экране. Я использую python 3.3. Если вы проверите файл, единственное значение, которое оно будет печатать, будет через и не добавит его снова в дерево.проверить существующие значения в бинарном дереве python
Textfile - words.txt
nia
ria
via
sia
via
Код
class Bintree:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def put(self, data):
if data < self.data:
if self.left is None:
self.left = Bintree(data)
else:
self.left.put(data)
else:
if self.right is None:
self.right = Bintree(data)
else:
self.right.put(data)
def write(self):
if self.left:
self.left.write()
print(self.data)
if self.right:
self.right.write()
def exists(self, data):
if data < self.data:
if self.left is None:
return None, None
return self.left.exists(data, self)
elif data > self.data:
if self.right is None:
return None, None
return self.right.exists(data, self)
else:
return self.data
root = Bintree("root")
with open("words.txt", "r", encoding = "utf-8") as file:
for row in file:
word = row.strip()
checklist = root.exists(word)
if checklist == word:
print(word, end = " ")
else:
root.put(word)
print("\n")
Ваш экземпляр 'Bintree' нужен аргумент для данных. То, что вы показали здесь, не проходит мимо 'root = Bintree()' .... – pandita
просто используйте root = Bintree («root») ... – user2776294
Вам нужно показать нам код, который фактически воспроизводит вашу ошибку. Ваш текущий не делает этого. Я также не совсем уверен, какова ваша цель. Если вы после набора существующих слов, возможно [загляните в 'set'] (http://stackoverflow.com/questions/14332621/how-to-use-set-in-python) – pandita