Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 19:33   #1
kir_rik
Пользователь
 
Аватар для kir_rik
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию Удалить узле дерева (классы).

Код:
class STree{
      public:
             //STree* Parent;
             STree* Left;
             STree* Right;
             int key;
             char* word;
             
             STree(char* w);
             STree* find(char* w);
             void insert(char* w);
             int STree::show(int k);
             void remove(STree* up,char* w, int v);

};
Не удается написать удаление узла с заданным ключом word из дерева поиска.
Особенно вызывает вопросы момент, когда удалить нужно корень дерева.



Код:
int STree::remove(Stree* up, char* w, int v){
     if ( (strcmp(word, w)<0) && (this->Right==NULL) ) {printf("No such  word\n");return;}
     if ( (strcmp(word, w)>0) && (this->Left==NULL) )  {printf("No such  word\n");return;}
     
     if (strcmp(word, w)==0){
                      if (v==0) {}
                      if (v==1) {}
                      if (v==-1){}                                
     }
                      
                      
     if (strcmp(word, w)<0) this->Right->remove(this, w,1);
     if (strcmp(word, w)>0) this->Left->remove(this, w,-1);
}
Параметр v - указывает, правым или левым (1 и -1 соотв.) листом является this
Первый вызов функции происходит так:
STree* st; /*заполнение*/ st->remove(st,"KK",0);

Помогите пожалуйста заполнить блок if (strcmp(word, w)==0){} или подскажите другое решение.
kir_rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается удалить узел дерева. frmSm Общие вопросы C/C++ 19 02.06.2010 17:22
удалить дубли в tstringlist, и удалить по списку AHTOLLlKA Компоненты Delphi 2 17.01.2010 10:20
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36