Вывести генеалогическое дерево - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Задача состоит выводе бинарного дерева по принципу как на картинке. Уже много времени ломаю мозг, не могу добиться форматированного вывода. Помогите пожалуйста. Вот что у меня на данный момент имеется:
#include <stdio.h>
 
struct node {
    struct node *left;
    struct node *right;
    char *name;
};
 
struct node *createStructNode(char *name) {
 
    struct node * s= (struct node *)malloc(sizeof(struct node));
    s->name = name;
    return s;
}

void travel(struct node *root)
{
    if(root)
    {
        printf("%s\n", root->name);
 
        travel(root->left);
        travel(root->right);
    }
}
 
int main(void)
{
    struct node *stack;
 
   stack = createStructNode("Son");
   stack->left = createStructNode("Mother");
   stack->right = createStructNode("Father");
   stack->left->left = createStructNode("GrandMother");
   stack->left->right = createStructNode("GrandFather");

    travel(stack);
    return 0;
}

Решение задачи: «Вывести генеалогическое дерево»

textual
Листинг программы
void travel(struct node* root) {
    static int tab = 0;
    int i = tab;
    if (root) {
        while (i--) {
            printf("\t");
        }
 
        printf("%s\n", root->name);
 
        tab++;
        travel(root->left);
        travel(root->right);
        tab--;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы