Node * insert(const Key& k, const Value& v, Node *rt) {
if (rt == NULL) {
rt = new Node(k,v);
} else if (k < rt->key) {
rt->left = insert(k, v, rt->left);
} else if (k > rt->key) {
rt->right = insert(k, v, rt->right);
}
return rt;
}