#include #include #include #include #include #define SIZE 200 struct tree { char value[SIZE]; struct tree *left, *right; }; struct tree* read_tree(struct tree* p) { char buffer[SIZE]; memset(buffer,0,SIZE); char* r = fgets(buffer,SIZE,stdin); assert(r); struct tree* node = (struct tree*)calloc(1,sizeof(struct tree)); memcpy(node->value,buffer,SIZE); //printf("\n%s", node->value); node->left=NULL; node->right=NULL; if(node->value[0]!='*') { read_tree(node->left); read_tree(node->right); } return node; } void print_tree(struct tree* tree,int offset){ for (int i = 0; i < offset; i++){ printf("."); } printf("(%s)",tree->value); if (tree->left){ print_tree(tree->left,offset +3); } if (tree->right){ print_tree(tree->right,offset +3); } } int main(void) { struct tree *tr; read_tree(tr); printf("-------"); print_tree(tr,3); return 0; }