# stack_depth is initialised to 0
def find_in_tree(node, find_condition, stack_depth):
assert (stack_depth < max_stack_depth), 'Deeper than max depth'
stack_depth += 1
result = []
if find_condition(node):
result += [node]
for child_node in node.children:
result.extend(find_in_tree(child_node, find_condition, stack_depth))
return result
我需要帮助理解这段代码。我想回答的问题是
上面的Python函数搜索平衡二叉树的内容。
如果假设上限为1000000个节点,max_stack_depth常量应该设置为多少?
据我所知,这是一个诡计的问题。如果您仔细想想,每次在递归中调用find_in_tree()函数时,堆栈深度都会增加。我们试图在树中找到一个特定的节点。在我们的例子中,我们每次都在访问每个节点,即使我们找到了正确的节点。因为当找到正确的节点时停止算法时没有返回条件。因此,最大堆栈深度应为1000000?在
有人能解释一下他们的思维过程吗。在