【发布时间】:2020-10-06 00:02:05
【问题描述】:
假设我有二叉搜索树。每个节点都有两个指向子节点的指针,没有指向父节点的指针。
有没有不使用堆栈或队列来实现迭代器的有效方法?
高效是指能够以 O(1) 复杂度找到下一个元素。
【问题讨论】:
-
我猜即使使用堆栈,你能得到的最好结果也是 O(1) amortized 复杂度。
-
莫里斯遍历?
-
@vivek_23 不错,但对我来说没有任何好处。
-
@Nick 节点的下一个后继节点很难获得,但是如果您希望为一个节点存储的数据多于 2 个子节点,那么可以选择。
-
如果这是一个要求,那么应该在您的问题中提及。但请注意,通过 Morris 遍历,一旦迭代器被完全消耗,树将恢复到其原始状态。