我在Google上一直在研究这个问题,并在SDK文档中阅读了集合条目,没有发现任何内容.有没有一个BST(任何其变体)实现可用开箱即用的iOS SDK?
似乎很奇怪,一个主要的发展平台将会丢失一些如此基本的东西.他们的哈希实现是那么神奇吗?或者开发商假设没有人会对有订单的东西进行插入/删除?
我现在可以使用NSSet,因为我知道我们大多数人(包括我自己)并没有真正在iOS上编写任何需要保证访问时间的计算量,但它仍然在我的头脑中.
解决方法
CFBinaryHeap看起来很有前景,但实际上可能并不完全是你想要的,因为它不是一个二进制搜索树,而是一个
heap.它们是相似的,但不一样,所以我觉得Core Foundation的
CFTree类可能有点更好.以下是CFTree类参考的说明:
You use CFTree to create tree structures that represent hierarchical organizations of information. In such structures,each tree node has exactly one parent tree (except for the root tree,which has no parent) and can have multiple children.
如果你对C(Core Foundation是C,而不是Objective-C)不舒服,可以使用CFTree的Objective-C包装器的JKPTree库.你可以下载它here.
更新:
我刚刚发现另一个名为CHDataStructures的库,简化了各种数据结构的创建.它支持以下数据结构(和许多其他未列出的数据结构):
> AVL树
>抽象二叉搜索树
>安德森树
>链接列表
>搜索树
>红黑树
>不平衡树
>队列
>堆
您可以下载CHDataStructures here.