【发布时间】:2025-11-29 03:05:01
【问题描述】:
众所周知,可以使用递归(例如在 Python 中)通过 DFS(预排序)遍历树:
def DFS(node):
if node==None:
return 0
valueLeft=DFS(node.left)
valueRight=DFS(node.right)
return max(valueLeft,valueRight)+1
如果我们调用DFS(root),这段代码显然会从根开始计算树的高度。但是有一个问题(......在某些机器中,python 的递归堆栈大小有限,所以这段代码溢出检查在 leetcode 中抱怨......)。
出于好奇以及解决 leetcode 问题,如何将上述带值返回的两分支递归转换为使用堆栈的迭代调用?我想这是可能的,因为递归是使用堆栈实现的,无论如何。从第一天开始,我在课堂上就被告知了,但从未见过这样的代码,尤其是对于具有返回值的多分支递归......
我会提前感谢任何人的帮助。
【问题讨论】:
标签: python algorithm recursion stack