Я рекурсивно добавляю узлы к своему дереву avl и я ФЕНД эффективностиПоэтому, когда я добавляю данные с именем d1 и получаю весь путь до узла, у которого уже есть d1, я не буду добавлять его, и поэтому мне нужно знать, как избежать обновления при обратном резервном копировании рекурсивного "стек ", как мне нравится думать об этом.Если есть способ вызвать что-то, что разрушает все рекурсивные вызовы, которые были бы великолепны.
Я не слишком старался, потому что не могу придумать, как обойти это.
private void rAdd(AVLNode<T> rootTemp, T data) {
if (rootTemp.getData().compareTo(data) > 0) {
if (rootTemp.getLeft() == null) {
rootTemp.setleft(data);
rootTemp.getLeft().setLeft(null);
rootTemp.getLeft().setRight(null);
rootTemp.getLeft().setHeight(0);
rootTemp.getLeft().setBalanceFactor(0);
return;
} else {
if (rootTemp.getLeft().getData().compareTo(data) == 0) {
return;
} else {
rAdd(rootTemp.getLeft(), data);
update(rootTemp);
}
}
} else {
if (rootTemp.getRight() == null) {
rootTemp.setleft(data);
rootTemp.getLeft().setLeft(null);
rootTemp.getLeft().setRight(null);
rootTemp.getLeft().setHeight(0);
rootTemp.getLeft().setBalanceFactor(0);
return;
} else {
if (rootTemp.getRight().getData().compareTo(data) == 0) {
return;
} else {
rAdd(rootTemp.getRight(), data);
update(rootTemp);
}
}
}
}
Мне нужен этот плохой парень, чтобы быть эффективным и без какого-либо сумасшедшего импорта, как я вижу, что многие люди рекомендуют.