поиск по всему бинарному дереву поиска - PullRequest
0 голосов
/ 22 мая 2018

У меня есть метод, который печатает название фильма, если оно совпадает с годом, указанным в параметре.

private void searchByYear(BTNode root, int year) {
    BTNode temp = root;
    if(temp == null)
        return;
    else if(temp.data.titleYear == year){
        System.out.println(temp.data.title);
    }
    else{
        searchByYear(temp.left, year);
        searchByYear(temp.right, year);
    }
}

Проблема: печатает некоторые фильмы, а не все.Я полагаю, что проблема должна быть в рекурсивном вызове.

Примечание: сортировка не по году, поэтому я должен искать по всему дереву.Также я хочу, чтобы метод печатал, а не возвращал узел.

1 Ответ

0 голосов
/ 22 мая 2018

Объедините блок else if с блоком else, чтобы он выполнял рекурсивный вызов после выполнения проверки.

private void searchByYear(BTNode root, int year) {
    BTNode temp = root;
    if(temp == null)
        return;
    if(temp.data.titleYear == year){
        System.out.println(temp.data.title);
    }

    searchByYear(temp.left, year);
    searchByYear(temp.right, year);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...