У меня проблема с циклом while:
def ancestors(node, tree):
ancestorsss = []
ancestorsss.append(node.value)
parent = node.parent
while(parent != 0):
parent_node = find_node(parent, tree)
parent = parent_node.parent
ancestors(parent_node, tree)
return ancestorsss
в моем примере, первый родительский элемент равен 4, и он должен пройти цикл while, во втором родительском элементе итерации тоже 2, что нормально, третий-time parent равен 1, также хорошо, затем parent равен 0, и пока цикл все еще продолжается?Я думаю, что он должен выйти, когда parent = 0, но это не так.
Edit: Node - это объект, у которого есть значение и родитель.Дерево - это список объектов узлов [(1, 0), (2, 1), (3, 1), (4, 2), (5, 2), (6, 3), (7, 3), (8, 4), (9, 4)].
Теперь я вызываю функцию предков с узла (8,4) и думаю, что он должен идти (8, 4), (4, 2), (2, 1) и (1, 0).Он не останавливается на (1, 0)
Редактировать 2:
def find_node(parent, tree):
node = next((x for x in tree if x.value == parent), None)
return node