我有 BST 的基本(无随机化、排序等)实现。我想添加迭代器实现并使 BST 适合基于范围的 for 循环。 所以我需要 begin()、end() 成员函数和迭代器递增。
我明白 begin() 应该做什么 - 将迭代器返回到最左下角的节点,并且 this thread讨论遍历 BST 的不同可能性(=递增迭代器)
但是 end() 应该将迭代器提供给最后一个元素。这是实际的问题,我不明白,在 BST 的背景下这是什么意思?
最佳答案
结束迭代器不一定必须是最后一个元素之后的一个(这对于 vector 有意义,但对于树等来说则不太有意义)。它必须只是一个可以清楚地识别为不是用于指示已到达数据结构末尾的有效迭代器的迭代器。
实际上,这可以通过多种方式完成,具体取决于迭代器如何引用它所指向的内容。例如,如果它使用指向树节点的指针,则可以将空指针用于结束迭代器。
关于C++:二叉搜索树 end() 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043638/