Лучший способ сделать это может заключаться в использовании меток-меток библиотеки sklearn.
Что-то вроде этого:
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(["paris", "paris", "tokyo", "amsterdam"])
list(le.classes_)
le.transform(["tokyo", "tokyo", "paris"])
list(le.inverse_transform([2, 2, 1]))
Классный алгоритм.
Подумайте о том, что произойдет, когда больше не будет ни левого, ни правого:
Это может произойти один раз, но больше не будет вызывать затем самый большой == self.root.key, поэтому здесь нет
[110 ]Этого не произойдет
if self.root.right:
И этого не будет
if self.root.left:
, но
self.root по-прежнему верно, поэтому
while self.root:
Будет работать вечно