МЭИ(ТУ) *** 75 лет *** MPEI(TU) Московский Энергетический Институт (Технический Университет)

Сайт Гречкиной Полины Викторовны

30 лет Кафедре Прикладной математики АВТИ МЭИ(ТУ)
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2019 » Май » 28 » ТР 2019 - пример на Си вывода бинарного дерева, созданного на основе массива
00:36
ТР 2019 - пример на Си вывода бинарного дерева, созданного на основе массива

По многочисленным просьбам:
пример на Си++ рекурсивного графического вЫвода бинарного дерева, созданного на основе массива, 
для генеалогического дерева:

 

В нижеприведенном коротком примере для краткости дерево уже "введено" - задано константой (массив из 16 строк, нулевой элемент не задействован). А в ТР (пункт б.) надо вводить его (не массив по-элементно, а генеалогическое бинарное дерево по вышеуказанному файлу в массив или нелинейный список) :

Программный код для копирования:

#include <stdio.h>
struct TTree{
    char**mas;
    int cur, len;
};

void go_left(TTree &T) { T.cur*=2; return;} 
void go_right(TTree &T) { T.cur*=2; T.cur++; return;}
void go_up(TTree &T) { T.cur/=2; return;}
bool is_curtree_empty(TTree &T) { if  (T.mas[T.cur]==NULL) return true; return false;}
char* get_cur(TTree &T){ return T.mas[T.cur];}

void vert_tree(TTree &T, int lair = 1){

    if (is_curtree_empty(T)) printf("%*s%s\n",lair*5,"-----","**");
    else { char ch=0;
        printf("%*s%s\n",lair*5,"-----", get_cur(T));
        go_left(T); vert_tree(T, lair+1); go_up(T);
        go_right(T); vert_tree(T, lair+1); go_up(T);

    }
}
int main()
{
    printf("TP Tree\n");
    char* treeArray[]={NULL, "Иван",
                             "Петр", "Мария",
                             "Алексей", "Елена", NULL, "Ольга",
                             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
    TTree T1 = {treeArray, 1, 16};
    vert_tree(T1);
    return 0;
}

 

Просмотров: 1067 | Добавил: grechkinapv | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Архив записей
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright Гречкина Полина Викторовна © 2024
    Хостинг от uCoz