-2

BinarySearchTree ノードの Key と Value の違いについて混乱しています。キーのポイントは何ですか? 値のみに基づいて BST を作成することはできませんか? Key と Value を含む 2 つのコード サンプルを次に示します。これらは、2 つの異なるソースから入手した 2 つの異なるコードです。

template<typename Key, typename Value>
class Node
{
private:
public:
Node<Key, Value>(Key key, Value value)
{
this->key = key;
this->value = value;
N = 1;
left = NULL;
right = NULL;
};
Node* left; 
Node* right; 
Key key; 
Value value; 
int N; 
};

2 番目のコードは次のとおりです。

void insert(int value)
{
    if(root == NULL)
        root = new Node(value);
    else
        insertHelper(root, value);
}

void insertHelper(Node* node, int value)
{
    if(value < node->key)
    {
        if(node->leftChild == NULL)
            node->leftChild = new Node(value);
        else
            insertHelper(node->leftChild, value);
    }
    else
    {
        if(node->rightChild == NULL)
            node->rightChild = new Node(value);
        else
            insertHelper(node->rightChild, value);
    }
}
4

1 に答える 1

3

値は、ノードに関連付けられているものにすぎません。必要に応じて、これはノードのペイロードです。任意のプリミティブ型またはオブジェクトです。

キーは、ノードをツリーに挿入する場所を決定するために使用されます。Value は、Key のようにツリー構造の開発と維持にはまったく関与しないことに注意してください。

Nik は良い例えを提供しました。ノードはコンテナーです。Value はコンテナに入れるもので、Key はコンテナをマークして後で取得できるようにする方法です。

于 2013-04-23T16:59:19.303 に答える