【问题标题】:When should I use a stack to convert a recursive function into an iterative one?什么时候应该使用堆栈将递归函数转换为迭代函数?
【发布时间】:2020-08-13 02:34:10
【问题描述】:

我一直致力于使用迭代函数而不是递归函数来实现二叉搜索树,并注意到 我不需要为 insert() 之类的函数创建堆栈 但是必须为与遍历和打印树中的节点相关的功能创建一个。

我想知道何时使用堆栈将递归函数转换为迭代函数是否有一般经验法则。

【问题讨论】:

  • 在递归可能太深并且有堆栈溢出风险时执行此操作。

标签: recursion tree stack binary-tree binary-search-tree


【解决方案1】:

您不需要堆栈用于像 insert 这样的函数的原因是因为您正在寻找放置值的目的地。几乎只是进行搜索。

我不确定您是否需要一个堆栈来打印出这些值,除非它们的打印顺序很重要,但在这种情况下,您实际上是在“排序”而不仅仅是搜索。在处理多个值并对它们进行排序时需要使用堆栈。

【讨论】:

  • 有道理。感谢您的帮助!
猜你喜欢
  • 2017-03-12
  • 1970-01-01
  • 2020-08-08
  • 2015-05-30
相关资源
最近更新 更多