Как напечатать двоичное дерево на языке Си с дизайном слева направо?
Мне нужно напечатать двоичное дерево, которое выглядит следующим образом
WP WA SW SG RR RE PI KN KA HN HI GU GA DV CX BO AS
Что я уже пробовал:
#include <stdio.h> #include <string.h> #include <stdlib.h> int found=0; struct BstNode{ char initial[5]; BstNode *left; BstNode *right; BstNode* parent; }*root = NULL; BstNode *GetNewNode(char initial[5]){ BstNode *newNode = (BstNode*) malloc(sizeof(BstNode)); strcpy(newNode->initial,initial); newNode->left = NULL; newNode->right = NULL; newNode->parent = NULL; return newNode; } void push(BstNode *curr,char initial[]){ if(root==NULL){ root=GetNewNode(initial); }else{ if(strcmp(initial,curr->initial) < 0){ if(curr->left==NULL){ curr->left=GetNewNode(initial); curr->left->parent=curr; }else{ push(curr->left,initial); } } else if(strcmp(initial,curr->initial) > 0){ if(curr->right==NULL){ curr->right=GetNewNode(initial); curr->right->parent=curr; } else{ push(curr->right,initial); } }else{ found=1; } } } void inOrder(BstNode *curr){ inOrder(curr->left); printf("%s",curr->initial); inOrder(curr->right); } int main() { int choose = 0; do { system("cls"); puts("1. Add Initial"); puts("2. View Initial"); puts("3. Exit"); printf(">> "); scanf("%d", &choose); fflush(stdin); switch (choose) { case 1: char initial[5]; puts(""); do{ do{ printf("Input Initial [example: SW]: "); scanf("%[^\n]", &initial); fflush(stdin); }while(strlen(initial)!=2 || initial[0] < 'A' || initial[0] > 'Z' || initial[1] < 'A' || initial[1] > 'Z'); found=0; push(root,initial); }while(found==1); getchar(); break; case 2: inOrder(root); getchar(); break; } } while (choose != 3); // START HERE // ADD LOGIC FOR POP ALL DATA IN THE LINKED LIST // END HERE puts("\nThanks for using this program"); system("pause"); return 0; }
OriginalGriff
В чем же проблема?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
Что вы сделали, чтобы заставить его сделать это?
Что вы пытались выяснить, почему?
Что показал отладчик?
какая помощь вам нужна?
Member 13750476
это программа для отображения двоичного дерева на языке Си с интервалом, чтобы оно выглядело как дерево, но в горизонтальной ориентации. Я пытался добавить интервал, но это не сработало. Единственное, в чем я уверен, так это в том, что дерево печатается по порядку
Patrice T
Покажите, что вы получаете в качестве результата.