Я пытаюсь написать функцию remove(node cRoot, Object o)
для сортированного двоичного дерева.Java, метод удаления двоичного дерева
Вот то, что я до сих пор:
private boolean remove(Node cRoot, Object o) {
if (cRoot == null) {
return false;
}
else if (cRoot.item.equals(o)) {
//erase node fix tree
return true;
}
else if (((Comparable)item).compareTo(cRoot.item)<=0){
return remove(cRoot.lChild, o);
}
else {
return remove(cRoot.rChild,o);
}
}
Это не работает правильно. Чтобы удалить узел, вы должны восстановить дерево, чтобы исправить отверстие. Как это сделать?
Исправление дерева зависит от алгоритма, который вы используете для балансировки дерева. – 2009-05-21 22:04:42