Я пытаюсь реализовать класс TreeMap, и у меня возникла проблема при помещении элементов в TreeMap. Вот код:Узел TreeMap имеет значение null после назначения
public class TreeMap<K,V> implements Map<K,V> {
private Comparator<K> comparator;
private int size;
private Node<K,V> head;
public TreeMap(Comparator<K> comparator){
this.comparator = comparator;
size = 0;
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public V put(K key, V value) {
return rootPut(head, key, value);
}
private V rootPut(Node<K,V> node, K key, V value){
if(isEmpty()){
node = new Node<>(key, value);
size++;
return null;
}
int compare = comparator.compare(head.key, key);
if(compare == 0){
V auxValue = node.value;
node.value = value;
size++;
return auxValue;
} else if(compare > 0){
return rootPut(node.right, key, value);
} else{
return rootPut(node.left, key, value);
}
}
}
Проблема заключается в том, что, когда я исполняю эту линию:
node = new Node<>(key, value);
узел всегда нуль. Я уже пробовал отлаживать код, но проблема не устранена.
Другие методы, которые я здесь не включал, потому что они работают.
Это нуль сразу после выполнения этой строки или после возврата из 'rootPut()'? – gla3dr