У меня есть двоичное дерево поиска и вы хотите найти узел с указанным значением. Это мой код для этого, но я получаю ошибку переполнения стека. Надеюсь, кто-то скажет мне, почему. Мой код:У меня есть ошибка переполнения стека здесь, но я не знаю, почему
public TreeNode findNodebyKey2(int val) {
if (val == key) {
return this;
} else if (val < key) {
return this.left.findNodebyKey2(val);
} else if(val > key){
return this.right.findNodebyKey2(val);
}
return this;
}
отладки вашей программы. условие 'val == key' никогда не выполняется, и у вас заканчиваются кадры стека. – TheLostMind
. Вы используете рекурсивные вызовы, которые приводят к ошибке переполнения стека. Потому что всякий раз, когда метод называется стеком, будет выделен стек для выполнения операции. – Shriram
1. Проверьте, правильно ли вставлены данные слева и справа. Он ТОЛЬКО работает, если дерево правильное. 2. Я также вижу исключение NullPointerException, когда слева или справа отсутствует (что должно быть у листьев в случае отсутствия соответствия). 3. вернуть это никогда не будет достигнуто, удалите это. 4. Если 1, 2 являются правильными, StackOverflow должен быть только в том случае, когда данные огромны или превышают память. – abksrv