Я написал метод, который ищет запись в двоичном дереве поиска. Он успешно выполняет поиск значения, но я не думаю, что он найдет все дубликаты. Причина, по которой я знаю, что это не работает, заключается в том, что я пытаюсь написать другой метод, который возвращает arraylist со всеми дубликатами значения поиска. Этот метод возвращает только первое найденное значение. вот мои два метода. для метода arraylist я думаю, что я должен написать рекурсивный метод для получения всех значений, но я не уверен, как это сделать.Как вернуть все дубликаты двоичного дерева поиска java
public T getEntry(T entry) {
T result = null;
boolean found = false;
BinaryNodeInterface<T> currentNode = getRootNode();
while (!found && (currentNode != null)) {
T currentEntry = currentNode.getData();
if (entry.equals(currentEntry)) {
result = currentEntry;
found = true;
} else if (entry.compareTo(currentEntry) < 0)
currentNode = currentNode.getLeftChild();
else
currentNode = currentNode.getRightChild();
}
return result;
}
public ArrayList<T> getAllEntries(T searchVal) {
BinaryNodeInterface<T> currentNode = getRootNode();
ArrayList<T> array = new ArrayList<T>();
T value = getEntry(searchVal);
if (value == null)
return array;
else
array.add(getEntry(searchVal));
return array;
}
Вы можете проверить принятый ответ на этот вопрос: http://stackoverflow.com/questions/7707321/strategy-for-duplicate-entries-in-a-binary-search-tree – ajb