Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление узла из бинарного дерева. 
:(
    Опции темы
Dashka64
Дата 4.10.2014, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.4.2014

Репутация: нет
Всего: нет



Все нужные функции есть в коде, помогите удалить элемент по ключу.
Код

#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;
    }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.