Добавлять в дерево элементы мы можем, теперь займись удалением:
Необходимо реализовать метод remove(Object o), который будет удалять элемент дерева имя которого было полученного в качестве параметра.
Если переданный объект не является строкой, метод должен бросить UnsupportedOperationException.
Если в дереве присутствует несколько элементов с переданным именем - можешь удалить только первый найденный.
Не забывай сверять поведение своего дерева с картинкой:
Что будет если удалить из дерева элементы "3", "4", "5" и "6", а затем попытаемся добавить новый елемент?
В таком случае элементы "1" и "2" должны восстановить возможность иметь потомков (возможно придется внести изменения в метод add()).
package com.javarush.task.task20.task2028;
import java.util.List;
public class Solution {
public static void main(String[] args) {
List<String> list = new CustomTree();
for (int i = 1; i < 16; i++) {
list.add(String.valueOf(i));
}
System.out.println("The list size is " + list.size());
System.out.println("The expected parent is 3. The actual parent is " + ((CustomTree) list).getParent("8"));
System.out.println("The expected parent is null. The actual parent is " + ((CustomTree) list).getParent("20"));
list.remove("3");
System.out.println("The expected parent is null. The actual parent is " + ((CustomTree) list).getParent("8"));
list.add("16");
System.out.println("The expected parent is 9. The actual parent is " + ((CustomTree) list).getParent("16"));
list.remove("4");
list.remove("5");
list.remove("6");
System.out.println("Expected: true. Actual: " + list.add("20"));
System.out.println("The expected parent is 1. The actual parent is " + ((CustomTree) list).getParent("20"));
}
}
