Вывести генеалогическое дерево - 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--;
}
}