在递归函数中的变量解包期间,Python“Int object is not iterable”

2024-10-01 04:58:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个递归函数,它遍历二叉树,计算最左边的节点和最右边的节点之间的差异。你知道吗

它通过获取一个参数“count”来实现这一点,如果我导航到左边的子级,这个参数是count-1,如果我导航到右边的子级,这个参数是count+1。你知道吗

它返回一个元组(countsx,countdx),其中countsx(countdx)是当前count变量(countsx和countdx)之间的最小值(最大值)、左子级返回的countsx(countdx)值和右子级返回的che countsx(countdx)值。你知道吗

这是密码。它在递归开始处的标记行上引发错误“Int type is not iterable”。你知道吗

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))

Tags: tree参数returnif节点countnotit
1条回答
网友
1楼 · 发布于 2024-10-01 04:58:41

您的树最初是空的,所以您正在点击return count,这不能被解压成两个值

也许你想要return count, count?你知道吗

相关问题 更多 >