#include #include #include #include struct tree { char value[20]; struct tree* left; struct tree* right; }; /*struct tree* create_node(char* string){ struct tree* node = calloc(1, sizeof(struct tree)); node->left = NULL; node->right = NULL; strcpy(node->value, string); return node; }*/ struct tree* read_tree(){ char buffer[20]; memset(buffer,0,20); char* r = fgets(buffer,20,stdin); int x = strlen(buffer); buffer[x-1]='\0'; assert(r); struct tree* node = calloc(1,sizeof(struct tree)); if(buffer[0] == '\0'){ return node; } memcpy(node->value, buffer, 20); /*if(node == NULL){ return create_node(); }*/ if(buffer[0] != '*'){ if(node->left == NULL){ node->left = read_tree(); } if(node->right == NULL){ node->right = read_tree(); } } /*else if(string[0] == '*'){ if(node->left == NULL){ strcpy(node->value, string); } else if(node->right == NULL){ strcpy(node->value, string); } }*/ if(node->left != NULL && node->right != NULL){ return node; } } void print_tree(struct tree* node, int offset){ int i; for (i = 0; i < offset; i++){ printf(" "); } printf("%s",node->value); if (node->left){ print_tree(node->left,offset + 3); print_tree(node->right,offset + 3); } } struct tree* search(struct tree* this, char answer){ if(this != NULL){ if(answer == 'a'){ printf("%s\n", this->value); this->left = search(this, answer); } else if(answer == 'n'){ printf("%s\n", this->value); this->right = search(this, answer); } } else{ exit(0); } } void destroy_tree(struct tree* root){ if(root == NULL) return; destroy_tree(root->left); destroy_tree(root->right); free(root); root = NULL; } int count_l(struct tree* node){ if(node == NULL){ return 0; } if(node->left == NULL && node->right == NULL){ return 1; } else{ return count_l(node->left) + count_l(node->right); } } int main(){ struct tree* tree = NULL; tree = read_tree(); int count = count_l(tree); printf("Expert z bufetu to vie\n"); printf("Pozna %d druhov ovocia a zeleniny\n", count); printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.\n"); //print_tree(tree, 3); //display(tree); destroy_tree(tree); return 0; }