Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Бин-дерево на консоль


Автор: intel 10.12.2009, 13:59
Привет

Пишу функцию на Си, которая принтит дерево на консоль. Дерево лежит в масиве размера size Всё вроде елементарно, но что-то никак.
В общем вот что я уже сделал (При вызове n равна нулю):
Код

void print(int n)
{
    if (n < size)
    {        
        printf("--|%c", heap[n]);

        printf("\n");
        print_space(n);
        
        print(n * 2 + 1);

        print(n * 2 + 2);

        n = n + 1;
    }  
}


А вот что она выдаёт:

--|a
--|b
 --|d
   --|n
        --|h
         --|g
    --|p
          --|c
  --|i
     --|j
      Press any key to continue ...

Всё вроде ничего, но обратите внимание на то, где остановилась каретка в последней строке! И ещё - пробелы перед каждой буквой, тоже не правильны.
Короче, вот так она должна выдавать на консоль:

|-- a
    |-- b
        |-- d
            |-- n
            |-- h
        |-- g
            |-- p
    |-- c
        |-- i
        |-- j

Прошу помочь. Спасибо

Автор: maxdiver 10.12.2009, 22:28
Для начала, print_space должна идти перед printf. Возможно, этого и достаточно для правильной работы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)