У меня есть дерево BST. Я хочу создать метод, который получает значение и возвращает уровень узла, содержащего его значение (корень = 0), нет такого узла? return -1. Я хотел бы сделать это рекурсивно. этот код прекрасно работает:java- BST рекурсивное найти значение
private int recursiveContains(BinaryNode node, int searchVal){
int nodeKey = node.nodeKey;
if (searchVal < nodeKey){
if (node.leftChild != EMPTY_NODE)
return 1 + recursiveContains(node.leftChild, searchVal);
}else if (searchVal > nodeKey){
if (node.rightChild != EMPTY_NODE)
return 1 + recursiveContains(node.rightChild, searchVal);
}
return 0;
}
НО, только до тех пор, как дерево содержит значение поиска.
Как остановить итерацию и вернуть -1, когда я доберусь до листа и не нашел значение? Возможно ли рекурсия?
Thanks
все еще не работает. если узел не найден, он возвращает высоту ближайшего узла-1 – user3150902
@ user3150902 Как я упоминал в конце первого абзаца, вам все равно нужно учитывать возможные значения -1 в рекурсивных вызовах и обрабатывать их соответствующим образом. Я редактировал в некотором примерном коде, чтобы показать, что я имею в виду: если рекурсивный вызов возвращает -1, вы не должны его возвращать: просто дайте ему провалиться до значения «не найден». –