-2

我对 BinarySearchTree 节点中的键和值之间的区别感到困惑。钥匙的意义何在?您不能仅根据一个值来确定 BST 吗?下面是两个包含 Key 和 Value 的代码示例。它们是我从两个不同来源获得的两段不同的代码。

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; 
};

第二段代码是;

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

价值只是附加到节点的东西。如果您愿意,它是节点的有效负载。它是任意原始类型或对象。

Key 用于确定将节点插入树的位置。请注意,Value 并不像 Key 那样参与开发和维护树结构。

Nik 提供了一个很好的类比:节点是一个容器。Value 是您放入该容器的内容,而 Key 是您标记容器的方式,以便您以后可以检索它。

于 2013-04-23T16:59:19.303 回答