Не проходит последний пункт Делаю так: перед добавлением проверяю есть ли хоть у одного элемента availableToAddLeftChildren или availableToAddRightChildren в значении true, если нет, то делаю у всех элементов без детей эти параметры в true. В методе public void add(String s):
if (notAvailableToAdd(x)) {
            makeAvailableToAdd(x);
}