前段时间,我在研究avl树的迭代实现。在节点不使用parent指针的情况下,我尝试使用堆栈来实现双向地迭代。参考了网络上的大部分迭代器实现后,发现没有找到一种真正意义上可以双向迭代的算法。因此,我基于灵感想到了一个只使用很低层数的堆栈就可以完成双向迭代的算法。我将其命名为“基于双向堆栈的AVL树双向迭代算法”。
这个算法分为三个主要部分:初始化、前向迭代(next)、后向迭代(previous)。下面我将以文字的形式详细说明这三个算法。
图1 AVL树实例