python 二叉树查找_Python二叉树搜索

# 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?在

有人能解释一下他们的思维过程吗。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值