Вывести генеалогическое дерево - 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--; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д