Каким должно быть утверждение в основной функции, которое дает правильный вывод - PullRequest
0 голосов
/ 28 февраля 2019

Постановка задачи. В соответствии с проблемой существует двоичное дерево, у корневого узла 3 которого оставлен дочерний элемент 9, правый дочерний элемент 20, а когда 20 действует как корневой узел, его левый дочерний элемент 15, правый дочерний элемент 7. 9 не имеет дочернего элемента.Итак, структура выглядит [3,9,20, нуль, ноль, 15,7].

Найти порядок порядка уровней в этом двоичном дереве. Обход порядка уровня / Ширина - первый поиск

Вывод: [

[3],

[9,20],

[15,7]

]

Для реализации этого метода я создаю древовидную структуру, такую ​​как

 class TreeNode {
       int val;
       TreeNode left;
       TreeNode right;
       TreeNode(int x) {
           val = x;
       }
  }

Я также создаю другой класс, который возвращает этот список вывода

class Solution102{

    public List<List<Integer>> levelOrder(TreeNode root){

    List<List<Integer>> result = new ArrayList<>();
       //function body
       return result;
    }
}

Сложности возникают в основной функции.

Структура основной функции

public class Q102 {
    public static void main(String args[]){

        Solution102 obj102=new Solution102();
        obj102.levelOrder(new TreeNode(3));
        obj102.levelOrder(new TreeNode(9));
        obj102.levelOrder(new TreeNode(20));
        obj102.levelOrder(new TreeNode(null));
        obj102.levelOrder(new TreeNode(null));
        obj102.levelOrder(new TreeNode(15));
        obj102.levelOrder(new TreeNode(7));
        System.out.println(obj102.levelOrder());//error

    }
}

System.out.println(obj102.levelOrder()); в этом утверждении, какое значение я отправил в (), чтобы получить вывод List of List.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Похоже, что в классе Solution102 нет метода levelOrder ().Вы должны перегрузить свой метод levelOrder без аргументов в Solution102.как: -----

public String levelOrder(){
     return "Now I am working";
}
0 голосов
/ 28 февраля 2019

В вашем коде есть две ошибки:

  • obj102.levelOrder(new TreeNode(null));: вы не можете присвоить ноль целому числу.То же самое относится и к следующей строке.
  • System.out.println(obj102.levelOrder());: метод levelOrder() ожидает параметр, а вы его не указали.
  • Вы не создаете resultСписок списков
  • Вы неоднократно возвращаете список списков каждый раз, когда вызываете метод levelOrder()

Мое решение:

  • Не кормитьTreeNode с null.Вместо этого, введите в него большое отрицательное число.
  • Добавьте метод в TreeNode, который возвращает val при вызове.Почему ты спрашиваешь?
  • В методе levelOrder() класса Solution102 проверьте, содержит ли TreeNode большое отрицательное число, которое вы использовали вместо null, с помощью метода возврата val.Если это соответствует, оставьте пустоту в Списке Списка.Иначе, просто введите значение в список списка
  • Управляйте оператором возврата метода levelOrder(), задав критерий.

Мои предложения:

  • Узнайте о Графах и деревьях и узнайте, как их конструировать программно
  • Узнайте больше о операторах возврата, классах и методах
0 голосов
/ 28 февраля 2019

Я игнорирую ваше дерево и реализацию обхода порядка ордеров.В соответствии с кодом, который вы разместили здесь, в вашем классе Solution102 есть только метод с подписью List<List<Integer>> levelOrder(TreeNode root), поэтому вы смогли это сделать - obj102.levelOrder(new TreeNode(3));

Чтобы позвонить - obj102.levelOrder(), у вас должен быть метод, определенный в вашем Solution102 классе с подписью - List<List<Integer>> levelOrder().

Это просто Java-материал, о котором я говорю.Ваше решение актуальной проблемы выглядит испорченным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...