【问题标题】:How to implement iterator of Btree?如何实现 Btree 的迭代器?
【发布时间】:2018-08-05 04:54:08
【问题描述】:

我在考虑如何实现Btree的迭代器?

对于普通的二叉树,我知道有线程二叉树之类的技巧。

对于 BTree+,由于值都在叶节点中,所以叶节点上的兄弟指针可以解决问题。

但是对于BTree,我就不知道了……

【问题讨论】:

标签: algorithm data-structures tree b-tree


【解决方案1】:

我不确定我是否理解你的问题,但如果你想要一个 btree 的迭代器。可能使用栈来遍历树,跟踪btree节点上当前处理数的索引。

  1. 创建一个带有栈的迭代器,并将当前索引的根标记为0。然后将根压入堆栈,如果根的当前索引有子节点,则将当前索引为0的第一个子节点也压入。直到到达叶节点。

  2. 当你调用 next 方法时,你从堆栈中弹出节点,你将返回当前索引的数量。如果当前 btree 节点还没有完成,你只需将当前索引增加 1 并再次推送到堆栈。

有些细节我没有涉及,但你基本上知道如何实现它。

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2011-05-29
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多