我有一个递归函数,它遍历二叉树并计算最左边的节点和最右边的节点之间的差。
通过导航到左孩子的参数“ count”来执行此操作,如果我导航到左孩子,则为count + 1,如果我去到右孩子则为count + 1。
它返回一个元组(countsx,countdx),其中countsx(countdx)是当前count变量(countsx和countdx两者),左子级返回的countsx(countdx)值和che countsx之间的最小值(最大值)从正确的子级返回的(countdx)值。
这是代码。在递归开始的标记行上会引发错误“ Int类型不可迭代”。
def ausilioes17(tree, count):
countsx = 0
countdx = 0
# If it's a leaf, just return the count parameter
if not tree.sx and not tree.dx: return count
if tree.sx:
# it raises an error here when unpacking
countsx, dummydx = ausilioes17(tree.sx, count-1) # <-------
if tree.dx:
dummysx, countdx = ausilioes17(tree.dx, count+1)
return min(countsx, dummysx, count), max(countdx, dummydx, count)
if __name__ == "__main__":
a = Tree() # has just left child (a.sx) and right child (a.dx)
sx, dx = ausilioes17(a, 0)
print(str(dx-sx))
答案 0 :(得分:2)
您的树最初是空的,因此您遇到了return count
,无法将其解包成两个值
也许您想要return count, count
?