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 集合库有一个红黑树和抽象二叉树 ,以及一些其他非树集合的东西。