递归VS非递归二叉树遍历

时间:2012-09-11 13:15:06

标签: binary-tree

二叉树遍历的递归VS非递归有什么区别?

哪一个最适合大树?为什么?

由于

2 个答案:

答案 0 :(得分:1)

递归函数更容易实现,因为您只需要关心一个节点,它们使用堆栈来存储每次调用的状态。

非递归函数的堆栈使用量要少得多,但要求您存储每个级别的所有节点的列表,并且可能比递归函数复杂得多。

答案 1 :(得分:1)

区别在于,递归方式使用调用堆栈,而迭代方式使用显式堆栈(堆栈数据结构)。这导致两件事: 1)如果是一棵大树,则递归方法可能会导致堆栈溢出。 2)使用迭代方法,您可以在遍历中途停止。换句话说,您可以使用堆栈来实现类似预排序/按顺序/后排序的迭代器。在某些情况下这很有用。

相关问题