【发布时间】:2019-11-15 03:33:16
【问题描述】:
我正在尝试为我的二叉搜索树实现一个迭代器类。 (更准确地说,它是一个 KD-Tree,但我认为这不会有太大的改变)。我希望迭代器遵循树的顺序遍历。我有一个 arrayList 包含这个“有序”顺序的叶节点,我希望迭代器按这个顺序遍历这些叶节点。如何使用这个 arrayList 来实现 next() 方法?
我尝试在 Iterator 类中创建一个名为 index 的 int 字段。然后我的 next() 方法将索引增加 1 并返回 arrayList.get(index)。但是,这似乎不起作用。
使用 arrayList 来实现 next() 不是必需的,但它似乎是最简单的方法。如果有办法用 arrayList 做到这一点,那将是首选。这甚至可能吗?如果没有,任何建议都将受到欢迎!谢谢
【问题讨论】:
-
你有一个包含所有节点的 ArrayList 吗?如果数据结构应该是二叉搜索树,这很奇怪。您能否编辑问题以包含有关此 ArrayList 中的内容和顺序的更多详细信息?
-
ArrayList 只包含叶节点,因为在这种情况下,叶节点包含所有重要数据。然后我希望我的迭代器能够遍历这些叶节点。
-
只对叶节点进行有序遍历是什么意思?如果只处理叶节点,那么前序、中序或后序都将以相同的顺序处理叶节点。 ArrayList 是否已经按正确的顺序包含节点?
-
是的,这就是我制作 ArrayList 的原因。 arrayList 按我希望迭代它们的顺序包含元素。因此,无论“按顺序”如何,我只希望我的 next() 方法遵循我的 ArrayList 的顺序
-
所以你可以写
arrayList.iterator()来获得一个迭代器,然后。
标签: java iterator binary-search-tree inorder