我在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,也可以,第三次父级为1,也可以,然后父级为0,而while循环仍在继续吗?我认为应该在parent = 0时退出,但不是。
编辑: 节点是具有值和父对象的对象。 树是节点对象列表[[1,0),(2,1),(3,1),(4,2),(5,2),(6,3),(7,3),( 8,4),(9,4)]。
现在,我用node(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
答案 0 :(得分:0)
最有可能是父变量类型中的问题,请确保它是整数或将条件更改为while parent != "0"
。
如果以上都不是,则可以共享有关node
和node.parent
的更多详细信息