我有一个递归函数,它遍历二叉树,计算最左边的节点和最右边的节点之间的差异。你知道吗
它通过获取一个参数“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))
您的树最初是空的,所以您正在点击
return count
,这不能被解压成两个值也许你想要
return count, count
?你知道吗相关问题 更多 >
编程相关推荐