【问题标题】:Tree : Performance comparison between stack implementation and recursive call of Traversal in BSTTree : BST中栈实现与遍历递归调用的性能比较
【发布时间】:2018-05-05 09:07:14
【问题描述】:

嗯,我目前正在学习数据结构和算法。我在二叉搜索树中有两种遍历方法。 (1)-堆栈实现
(2)-递归调用方法

哪一种性能更好?

【问题讨论】:

  • 取决于实际实现和计算机架构。
  • Bot 在时间复杂度上是一样的
  • 那么运行时间复杂度呢??
  • 把它们都写下来,自己去发现。

标签: algorithm performance data-structures time-complexity binary-search-tree


【解决方案1】:

只要算法保持不变,性能也应该相同。在您的情况下:性能保持不变,因为在这两种情况下都使用了堆栈。

在,堆栈实现程序员显式地维护一个堆栈以供遍历。而在递归调用方法中,程序内部调用栈用于遍历。

编辑:

那么运行时间复杂度呢??

两种情况的运行时间复杂度相同。但执行时间可能因实施而异。由于没有提供代码/实现,“一般意义上,递归可能需要更长的时间,因为

递归(天真地实现)涉及推送堆栈帧, 从堆栈中跳转、返回和弹出。

有关更多信息,您可以查看以下链接:

  1. Is recursion faster than loops
  2. Looping versus recursion for improved application performance

【讨论】:

  • 在每次递归调用的递归中都会维护一个堆栈,但这里我只显式维护一个堆栈
  • 不,递归方法中不应该有任何堆栈。在这里,您将利用递归功能来忽略外部堆栈维护。
  • 但在递归调用堆栈中隐式维护在方法区。
猜你喜欢
  • 2016-12-15
  • 1970-01-01
  • 2021-05-28
  • 2021-10-30
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多