我不熟悉如何在Python中从递归函数调用中弹出一个返回调用。在这个例子中,我写了一个“check if something is a binary tree method”,它必须返回true或false。但是,如果我从另一个函数调用它(即使在我遇到条件时),我不会得到False返回。在
我怎样才能确保回电一直持续下去?在
def isValidTree(root, tempArr):
if(root.left):
return isValidTree(root.left, tempArr)
if(len(tempArr) == 0):
tempArr.append(root.data)
elif(tempArr[len(tempArr) - 1] >= root.data):
return False
else:
tempArr.append(root.data)
if(root.right):
return isValidTree(root.right, tempArr)
def isBinarySearchTree(root):
print(isValidTree(root, []))
与其只返回对
isValidTree(root.left)
和isValidTree(root.right)
的递归调用的结果,不如检查递归调用是否返回False,在这种情况下,将False结果传播给调用者。此外,如果没有遇到错误,则应返回True:当您遍历树时,代码的结构方式没有完成,应该返回的值}来指示子树的有效性。正如@Vasif所指出的,您返回的不是您想要的}。在
True
或{string
或{你需要先测试一下基本条件,那就是我在叶子上吗?
我不知道你在用坦帕做什么,但我会把它留在里面。在
“冒泡”将发生在函数末尾的递归调用中,这是基于检查或您位于叶的事实。 您将得到一个}。在
boolean and ... and boolean
的链,它将解析为True
或{您可以根据https://en.wikipedia.org/wiki/Binary_search_tree#Verification调整算法 有关最小值和最大值,请参见Maximum and Minimum values for ints
相关问题 更多 >
编程相关推荐