可能最简单的迭代器存储最后看到的密钥,然后在下一次迭代时,在树中搜索该密钥的最小上限。迭代为O(log
n)。这具有非常简单的优点。如果密钥较小,则迭代器也较小。当然,它的缺点是迭代树的方法相对较慢。它也不适用于非唯一序列。
有些树正好使用您已经使用的实现,因为对于它们的特定用途来说,扫描非常快很重要。如果每个节点中的键数很大,那么存储同级指针的代价就不会太麻烦。大多数B树使用此方法。
许多搜索树实现都在每个节点上保留一个父指针,以简化其他操作。如果有,则可以使用指向最后看到的节点的简单指针作为迭代器的状态。在每次迭代中,您都在最后看到的节点的父节点中寻找下一个子节点。如果没有更多的兄弟姐妹,那么您将再上一层。
如果这些技术都不适合您,则可以使用存储在迭代器中的一堆节点。当正常遍历搜索树时,此功能与函数调用堆栈的功能相同,但是您无需将同级循环并在子级上进行递归,而是将子级推入堆栈并返回每个后续的同级。



