Изучая двоичные деревья поиска, пытаясь реализовать это сам, мне удалось заставить методы обхода работать правильно, теперь мне интересно, почему этот метод поиска не работает должным образом, не могли бы вы помочь определить ошибку в методе поиска, который я могу Кажется, я не заметил, где я мог ошибиться
Могу ли я также получить помощь с методом удаления Я не вижу, где может быть ошибка, и, что еще хуже, Я не получаю сообщение об ошибке, чтобы указать мне на направление или и вывод
ОБЕИ МЕТОДЫ Я НЕ ПОЛУЧАЮ ВЫВОД
КОД НИЖЕ
def search(self, val):
return self.__search(self.root, val) is not None
def __search(self, p, val):
if p is None:
return None
if val < p.info:
return self.__search(p.lchild, val)
elif val > p.info:
return self.__search(p.rchild, val)
else:
return p
tree = BinaryTree()
tree.insertion(59)
def delete(self, val):
self.root = self.__delete(self.root, val)
def __delete(self, p, val):
if p is None:
print(f"{val} Was not found")
elif val < p.info:
p.lchild = self.__delete(p.lchild, val)
elif val > p.info:
p.rchild = self.__delete(p.rchild, val)
else:
if p.lchild is not None and p.rchild is not None:
s = p.rchild
while s.lchild is not None:
s = s.lchild
p.info = s.info
p.rchild = self.__delete(p.rchild, s.info)
else:
if p.lchild is not None:
ch = p.lchild
else:
ch = p.rchild
p = ch
return p
tree = BinaryTree()
tree.insertion(59)
tree.insertion(45)
tree.insertion(72)
tree.insertion(75)
tree.insertion(69)
tree.insertion(50)
tree.delete(69)
tree.level_order()