Все нужные функции есть в коде, помогите удалить элемент по ключу. Код | #include "stdafx.h" #include "stdlib.h" #include "conio.h" #include "locale.h" void Add(struct binar_tree **current, int data); //добавление void Show(struct binar_tree *current, int l); //просмотр void Clear(struct binar_tree **current); //очистка struct binar_tree { int data, count;// вводимые данные и счетчик binar_tree *left, *right;// указатели на правое и левое поддеревья }; binar_tree *root = NULL; //корень дерева int count = 0; //счетчик int main() { int number, s; setlocale(LC_ALL, "rus"); do { printf("\tМЕНЮ \n"); printf("1.Добавить элемент \n"); printf("2.Просмотр дерева \n"); printf("3.Очистить дерево \n"); printf("0.Выход \n"); printf("Выбранное действие: "); scanf("%d", &s); switch(s) { case 1: printf("Введите элемент: "); scanf("%d", &number); Add(&root, number); printf("\nЭлемент добавлен! \n"); printf("--------------------------- \n\n"); break; case 2: printf("Дерево, лежащее на боку: \n"); if(root!=NULL) { printf("\n"); Show(root,0); } else printf("\nДерево пустое! \n"); printf("--------------------------- \n\n"); break; case 3: Clear(&root); printf("\nДерево очищено! \n"); printf("--------------------------- \n\n"); break; case 0: exit(1); default: printf("\nОшибка!!! \n"); printf("--------------------------- \n\n"); break; } } while(s != 0); _getch(); } void Add(binar_tree **current, int data) { if(*current != NULL) { if(data<(*current)->data) Add(&(*current)->left, data); else if(data>(*current)->data) Add(&(*current)->right, data); else (*current)->count++; } else { *current = new binar_tree; (*current)->data = data; (*current)->left = NULL; (*current)->right = NULL; (*current)->count = 1; count++; } } void Show(binar_tree *current, int l) { if(current != NULL) { Show(current->right, l+1); for(int i=0; i<l; i++) { printf(" "); } printf("%d \n", current->data); Show(current->left, l+1); } } void Clear(binar_tree **current) { if(*current != NULL) { Clear(&(*current)->left); Clear(&(*current)->right); delete *current; count = count-1; if(count == 0) *current = NULL; } }
|
|