Добрый день. Задача "Создать элементарную структуру дерева". У меня возникли трудности с добавлением элемента, понимаю что возможно нужно как то рекурсивно проходить по дереву. Нужно найти в дереве элемент parent, если у него нет таких child, добавить ему входящий child. Тут root - это корень дерева.
public boolean add(E parent, E child) {
if (root.eqValue(parent)) { //если наш корень это parent
if (!root.contain(child)) { //и в нем нет такого child, добавляем в него child
root.add(new Node<>(child));
modCount++;
return true;
}
} else {
//если parent не корень, что делать?
}
return false;
}
private Boolean add(Node node, E parent, E child) {
if (node.eqValue(parent)) { // если наш узел это parent
if (!node.contain(child)) { // и в нем нет такого child, добавляем в него child
node.add(new Node<>(child));
modCount++;
return true; // Если добавили - вернем true
} else
return false; // Если нашли, но не добавили - вернем false
} else {
for (Node childNode : node) { // Цикл по всем потомкам
Boolean res = add(childNode, parent, child);
if (res != null) // Если узел нашли
return res; // то выходим
}
// Если попали сюда, то ничего не нашли
return null;
}
}
public boolean add(E parent, E child) {
// Пытаемся добавить в корень, а там как пойдет
Boolean res = add(root, parent, child);
return res != null; // Если элемент был найден, вернем true
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости