我对BinarySearchTree节点中Key和Value之间的区别感到困惑。钥匙有什么意义?难道你不能仅仅依靠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);
}
}
答案 0 :(得分:2)
值只是附加到节点的东西。如果您愿意,它是节点的有效负载。它是一种任意的原始类型或对象。
密钥用于确定将节点插入树中的位置。请注意,Value在开发和维护树结构时根本不参与,如Key所做的那样。
Nik提供了一个很好的类比:节点是一个容器。 Value是您放入容器的内容,Key是标记容器的方式,以便您以后可以检索它。