2012-07-02 6 views
1

Я хочу знать код для печати двоичного уровня дерева на уровне, я имею в виду, если у меня есть это дерево:Печать бинарного дерева по уровням в Java

5 
/\ 
    3 2 
/ \ 
4  6 

Я хочу, чтобы напечатать это нравится: 5 3 2 4 6.

Я знаю, что мне нужно сделать метод глубины дерева, и я уже сделал это, но я не знаю, что еще делать.

+0

Используйте очередь для размещения дочернего узла и выталкивания следующего узла для печати. – nhahtdh

+0

Вы слышали о 'BFS'? – alfasin

+0

@nhahtdh Я не могу использовать какую-либо другую структуру данных, а не бинарное дерево –

ответ

3

Вы можете использовать алгоритм обхода уровня для их печати.

Алгоритм работает следующим образом:

очереди: = < корень>

пока очередь не пуста

v := queue.front 

print v 

foreach s : s is a son of v 

    queue.enqueue(s) 

queue.dequeue 
+1

это не Java ... – alfasin

+0

Я не могу использовать очереди, но спасибо в любом случае. –

+0

и, кстати, 'push' и' pop' - это методы 'stuck', а не' queue'. Для 'queue' это обычно' enqueue и 'dequeue' – alfasin

1

Хорошо, я думаю, что я понял это:
1. расширьте класс Node и добавьте свойство под названием height (int)
2. Вычислить высоту каждого узла дерева (простая рекурсивная функция - не требуется структура данных)
3. используйте цикл for и пройдите в порядке очереди для каждой высоты (уровня) и распечатайте узлы этого уровня

+0

downvoter - вы не разделяете ваши мысли с нами? – alfasin

Смежные вопросы