public V insert(K key, V value) {
        int cmp = key.compareTo(this.key);
        if (cmp < 0) {
            if (left == null) {
                left = new BinaryTreeNode<K, V>(key, value);
                return null;
            }
            return left.insert(key, value);
        }
        if (cmp > 0) {
            if (right == null) {
                right = new BinaryTreeNode<K, V>(key, value);
                return null;
            }
            return right.insert(key, value);
        }
        V temp = this.value;
        this.value = value;
        return temp;
    }