Написание рекурсивного поиска в дереве Предзаказа, который возвращает ответ в виде списка - PullRequest
0 голосов
/ 01 февраля 2020

Я создал следующее дерево

T<Integer> t1 = new T(84, new T(48, new T(30), new T(50)),
                new T(96, new T(90), new T(1)));

Теперь я пытаюсь отсортировать дерево в предварительном порядке и вернуть ответ в виде списка. Мой код работает, но я строю несколько списков, а не один список. Мой код выглядит следующим образом:

    public static<E> List<E> porderlist(T<E> a) {


           if (a.isEmpty())
               return new List<E>();
            else {


            return new List(a.getValue(), new List(porderlist(a.getLeft()),     porderlist(a.getRight())));

   }

Я получаю вывод [84, [48, [30, []], 50, []], 96, [90, []], 1, []]

Когда мне нужен вывод [84,48,30,50,96,90,1]

Любые подсказки о том, как я может остановить вложение списков.

Большое спасибо заранее

1 Ответ

0 голосов
/ 01 февраля 2020
public static<E> List<E> porderlist(T<E> a) {
    if (a.isEmpty())
        return new ArrayList<E>();
    else {
        List<E> list = new ArrayList<E>();
        list.add(a.getValue());
        list.addAll(porderlist(a.getLeft()));
        list.addAll(porderlist(a.getRight()));
        return list;
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...