关联数组,数组和树

时间:2013-06-11 00:15:27

标签: c++ arrays tree associative-array

我有两个问题: 如何修改Array Abstract数据类型以实现关联数组? 如何修改树抽象数据类型以实现关联数组?

1 个答案:

答案 0 :(得分:1)

要从数组中创建关联数组,您通常会从某种结构数组开始:

struct item {
    key_type key;
    value_type value;
};

然后您使用key来查找value s。为了提高效率,您通常希望根据key对数组进行排序,因此您可以使用二分搜索(或插值搜索,如果有任何程度的可预测性到您的密钥分发)。

对于树,你几乎都一样,除了对于树,二进制搜索是默认的。最终得到的节点与数组的节点非常相似,还有几个指针:

struct node { 
    key_type key;
    value_type value;
    struct node *left;
    struct node *right;
};

根据所涉及的树的类型,您可能还需要另一个指针来创建线程树和/或某些平衡信息(例如,对于AVL或R-B树)。相反,对于B树,您最终会得到类似于关联数组的节点数组,并将它们链接到一个平衡树中。