Я работаю над проблемой, которая требует от меня рекурсивного копирования бинарного дерева поиска и возврата дерева. Я кодирую в классе бинарного дерева поиска, поэтому он будет копировать любое дерево бинарного поиска, к которому оно обращено. В требованиях говорится, что закрытый метод должен иметь тип возвращаемого значения Entry<E>
и параметр типа Entry<E>
. Проблема, с которой я сталкиваюсь, заключается в добавлении нескольких записей в дерево.
Вот что у меня сейчас есть:
public BinarySearchTree<E> rcopy(){
BinarySearchTree newTree = new BinarySearchTree();
newTree.add(rcopy(root).element);
return newTree;
}
private Entry <E> rcopy(Entry <E> current){
if(current.left!=null) return rcopy(current.left);
if(current.right!=null) return rcopy(current.right);
return current;
}
А вот начальный класс, чтобы вы знали, что у меня есть в наличии:
protected static class Entry<E> {
protected E element;
protected Entry<E> left = null,
right = null,
parent;
protected int pos;
protected Entry<E> link = null;
public Entry() { }
public Entry (E element, Entry<E> parent)
{
this.element = element;
this.parent = parent;
}
}