Я хочу найти родителя для узла с определенным значением в BST. У моего класса node есть элемент атрибута (например, значение/ключ), слева и справа.Найти родителя в двоичном дереве поиска?
Идея найти родителей, как это:
1) Если значение (ключ) не существует, не возвращать None, None
2) Если корень равен значению (ключ) затем возвращают None , корень
3) Else найти значение (ключ) и возврата (пар, узел), где пар является родителем и узел
Моя функция выглядит следующим образом:
def findpar(self,key):
if not self._exists(key):
return None,None
elif self.root.item==key:
return None, self.root
p=self.root
found=False
while not found:
if p.left.item==key:
return p, p.left
found=True
elif p.right.item==key:
return p, p.right
found=True
elif p.item<key:
p=p.left
elif p.item>key:
p=p.right
Как обрабатывать вопрос когда p.left
или p.right
- нет?
Это действительно опрятное решение! Я не думал о том, чтобы инициализировать родителя таким Нет, это должно сильно помочь мне. – Lozansky
@ Lozansky HTH. LMK, если есть опечатка или что-то с кодом, так как я просто написал это прямо в ответ. –