@Override
    public boolean search(K k) {
        if (k == null) throw new NullPointerException();
        return find(k, root);
    }
This is another version of binary search tree with support of duplicates.
Idea: store extra variable that counts the number of duplicates in each node.
src/ds/BSTWithDuplicate.java