Cocoa Touch是否有search树数据结构?

我一直在Google上查看这些内容,并阅读SDK文档中的Collections条目,并且什么都没有发现。 iOS SDK是否提供了BST(任何变体)实现?

在一个主要的开发平台上丢失这么基本的东西似乎很奇怪。 他们的哈希实现是不是神奇? 或者开发者认为没有人会对有订单的东西进行插入/删除?

我现在可以使用NSSet ,因为我知道我们大多数人(包括我自己)并不是真的在iOS上编写任何需要确保访问时间的计算任务,但它仍然在啃我。

CFBinaryHeap看起来非常有前途和有用的,但它可能不是你想要的,因为它不是一个真正的二叉search树,而是一堆 。 他们是相似的,但不一样,所以我觉得Core Foundation的CFTree类可能会好一点。 以下是CFTree类参考的说明:

您可以使用CFTree来创build代表分层信息组织的树结构。 在这样的结构中,每个树节点只有一棵父树(除了没有父树的根树),并且可以有多个子树。

如果你不熟悉C(Core Foundation是C,而不是Objective-C),那么可以使用JKPTree库,它是CFTree的Objective-C包装器。 你可以在这里下载。

更新:

我刚刚find另一个名为CHDataStructures的库,它简化了各种数据结构的创build。 它支持以下数据结构(和许多其他未列出的数据结构):

  • AVL树
  • 抽象二进制search树
  • 安德森树
  • 链接列表
  • search树
  • 红黑树
  • 不平衡的树
  • 队列
  • 你可以在这里下载CHDataStructures。

CoreFoundation有一个你可以使用的CFBinaryHeaptypes。 没有Obj-C封装,但是一点C也不会伤害任何人。

如果您以.mm扩展名(Objective-C ++模式)命名文件,则可以使用C ++标准库中的std::set

它不是Cocoa Touch,但是GNU Objective-C 集合库有一个红黑树和抽象二叉树 ,以及一些其他非树集合的东西。