所以我编写了一个代码,它应该在树中获取给定节点的父代。这是伪代码。从根开始,
def parent(self, child):
if right child exists:
if the right child == child:
return self
else: self.right.parent(child)
if left child exists:
if the left child == child:
print('f')
return self
else: self.left._get_parent(node)
我一遍又一遍地遇到这个问题。
对于if the left child == child:
语句,如果函数找到if
或the left child == child
,则会输入the right child == child
语句。
但是,return语句不会执行此操作。我知道这一点是因为当我写if the left child == child:
并在其后写print('f')
时,它确实打印了f
,但是它没有返回self
。有谁知道为什么,任何人都可以解决如何解决这个问题?
此外,有没有人知道如何一次返回两个语句而不是元组或列表? 例如,如果我想返回1和2,
def x(n):
return 1, 2
这将返回(1, 2)
..有没有办法让它不作为元组返回?只是为了正常返回它。我问这个是因为当涉及到递归时,我想在1 AS WELL AS 2上调用相同的函数,而不是在元组(1, 2)
上调用。
答案 0 :(得分:2)
您的代码丢弃 else:
分支中递归调用的返回值。您需要更多return
语句:
if right child exists:
if the right child == child:
return self
else:
return self.right.parent(child)
if left child exists:
if the left child == child:
print('f')
return self
else:
return self.left._get_parent(node)
在Python中,表达式1, 2
创建一个元组,这是从函数返回多个值的规范方式。这就是通过返回一个元组,多个值返回的工作方式。
只需解压缩返回的值:
def foo():
return 1, 2
value1, value2 = foo()
或使用索引:
values = foo()
values[0], values[1]