Построй дерево(5)

  • 11
  • Недоступна
Добавлять в дерево элементы мы можем, теперь займись удалением: необходимо реализовать метод remove(Object o), который будет удалять элемент дерева имя которого было полученного в качестве параметра.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (97)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Даниил33 уровень
понедельник, 13:56
С первой попытки (был в шоке, но ожидал, так как сначала всё проверил), был 693-м. Понятно чего так мало народу решило это задание... Довольно сложненькое как по мне.
Dmitry Potamoshnev29 уровень, Москва
14 июля, 11:44
689-ый прикольная задачка на несколько часов, с виду сложная, но если мозг включить - прям радует. напрягает только метод main, который на последнем задании ввел в заблуждение, лучше исключить его тестирования валидатором, т.к. это немного мешает. Реально помог режим дебага в IDEA. Тоже использовал рекурсию в удалении потомков.
Sasha Dmitrieva32 уровень, Москва
14 июля, 11:18
Решено за 2 попытки на 4-ю задачу и 3 попытки на 5-ю, через ArrayList. В пятой таки пришлось воспользоваться рекурсией для определения глубины потомка. Метод add модифицировать не пришлось.
skybright29 уровень
9 июля, 16:55
677-й После решения 4 задачи эту решить не сложно. Основное время ушло на дебаг. 1 попытка провалилась, из за того что забыл уменьшать счетчик полей. Итого 2 попытки 1,5 часа Данные хранил в private List <Entry<String>> entryList = new LinkedList<>(); Еще нюанс, не понятно, если не куда дописывать узлы, надо последний уровень восстановить, все узлы, или именно 1 и 2 ? Я сделал так: if (!entry.isAvailableToAddChildren() && entry.leftChild == null && entry.rightChild == null){ entry.availableToAddLeftChildren = true; entry.availableToAddRightChildren = true; }
Сергей Козырев24 уровень, Москва
9 июля, 09:57
675-й. Делал через ArrayList<Entry>. Кто пойдёт этим путём - советую заполнять по максимуму все поля каждого объекта Entry, это позволит потом довольно легко совершать нужные манипуляции. Если совсем устанете - пишите в личку, с радостью помогу.
Vladimir Kraykin24 уровень
23 мая, 23:47
Добаваил новый список строк elementsToRemove в который рекурсивным методом добавил все имена елементов, что нужно удалить. Далее с помощью Predicate пробежался по списку всех елементов и удалял те, что соответствуют именам из elementsToRemove. Ну и родителю самого верхнего удаляемого елемента установил нужного потомка null, а флаг true.
Konstantin29 уровень, Одесса
13 мая, 14:50
Если разработчикам курса так хочется вставить в курс по Java курс Алгоритмов и структур данных, то считаю это должно делаться явно, а не под видом задачки, которую нужно погуглить.
Алексей Масис35 уровень, Новосибирск
28 апреля, 05:49
Че к чему, в методе remove при приведении к строка ловил Execption а затем выбрасывал new UnsupportedOperationException(), валидатор ругался: Если переданный объект не является строкой, метод remove() должен бросить UnsupportedOperationException. Потом стал ловить ClassCastException и проверку прошел. Почему так не понимаю(
Пётр41 уровень, Москва
22 апреля, 21:11
На курсере я делал и ЛинкедЛист и TreeList в проектах, интересный опыт. Тут немного другая реализация, конечно)
IgorDrankin25 уровень
20 апреля, 09:43
Ввел понятие getCurrentLevel(), которая возвращает текущий уровень самого нижнего элемента и задача решается достаточно быстро, правда все через рекурсии, хз как надо было :) Когда добавлял элемент - в рекурсии спрашивал мы на родительском уровне или нет, если на родительском - слева направо искал null детей, если их нет - возвращается false и все тоже самое запускается только на уровне +1.