不同类型的迭代器实现访问一个BST。理论问题

Different types of iterator implementation to visit a BST. Theoretical Question

要通过迭代器访问 BST,是否有关于滚动顺序的偏好?对我来说,我总是被告知要按顺序去做。

我想知道这个实现是专门用于维护树的顺序还是出于其他原因可能对结构进行的其他操作。

如果您需要按正确顺序遍历二叉搜索树的值,您确实需要 in-order 遍历。

在其他情况下,您会希望使用不同的顺序,但通常用于与树是二叉搜索树这一事实无关的目的。

例如:

如果你需要得到每个节点的高度(即它到最远叶子的距离),你需要访问children before访问parent,这样就可以从children的身高推导出parent的身高。为此,post-order 遍历最适合。

如果您需要获取每个节点的 深度(即它到根的距离),您需要访问 parents before 访问他们的 children,这样 child 的深度可以从它的 parent 的深度导出。因此,pre-order 遍历或 level-order 遍历最适合。

如果您需要找到从根到具有某些特定条件的节点的最短路径,您需要使用 breadth-first 搜索,这意味着您将执行 level-order遍历.