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

Поиск:

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


Шустрый
*


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

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



Как реализовать удаление из бинарного дерева поиска.
Мне надо удалить все поддеревья число которово до числа введенного с
клавиатуры..
PM MAIL   Вверх
Exekutor
Дата 21.12.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

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



Выразитесь поточней пожалуйста. Или приведите условие задачи

Это сообщение отредактировал(а) Exekutor - 21.12.2005, 17:03


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
pablo
Дата 21.12.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



чёто не совсем понятно что надо сделать ?
что значит число поддерева ? Количесто его потомков или как ?


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Exekutor
Дата 21.12.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

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



Должно быть, дата создания. Если дата создания поддерева меньше даты введенной с клавы то поддерево нужно удалить


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
byNet
Дата 23.12.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Задание такое. В файловой системе справочник файлов организован в виде упорядоченного двоичного дерева. Каждому узлу соответствует некоторый файл, в узле содержится имя файла и дата последнего обращения к нему.
Написать программу, которая удаляет из дерева все файлы(узлы), обращение к которым было до даты введенной с клавиатуры.


Вот код программы
Код

#include <stdio.h>    
#include <iostream.h>    
#include <iostream>    
#include <conio.h>    
#pragma hdrstop    
struct Node{    
int Data;    
std::string Name;    
Node *leftPtr,*rightPtr;    
};    
void add(int,char *,Node **);    
void outv(Node *);    
void outu(Node *);    
void outtr(Node *,int,int,int);    
void del(Node **,int );    
//---------------------------------------------------------------------------    
#pragma argsused    
int main(int argc, char* argv[])    
{ int dat,d;    
  char *nam=new char(sizeof(char));    
 Node *root=NULL;    
   for (int i=0;i<10;i++)    
   { cout<<"Data file: ";    
     cin>>dat;    
     cout<<"Name file: ";    
     cin>>nam;    
      add(dat,nam,&root); }    
      cout<<"Vozrastanie:"<<endl;    
       outv(root);    
      cout<<endl<<"Ubyvanie:"<<endl;    
       outu(root);    
       clrscr();    
      cout<<endl<<"Derevom:"<<endl;    
      outtr(root,1,80,7);    
      cout<<"Delete all file do daty: ";    
      cin>>d;    
        del(&root,d);    
        clrscr();    
        cout<<endl<<"Derevom:"<<endl;    
      outtr(root,1,80,7);    
        getch();    
        return 0;    
}    
void add(int a,char *b,Node **ptr)    
{int c;    
 if (!*ptr){    
 if((*ptr= new Node)==NULL)    
 {cout<<"Memory don't have!Exit..."<<endl;    
 return;}    
 (*ptr)->Data=a;    
 (*ptr)->Name=b;    
 (*ptr)->leftPtr=(*ptr)->rightPtr=NULL;    
 }    
  else    
   { c=((*ptr)->Data)-a;    
     if (c>0) add(a,b,&((*ptr)->leftPtr));    
     else if (c<0) add(a,b,&((*ptr)->rightPtr));    
      else cout<<"Element: "<<a<<" duble!"<<endl;}    
}    
void outv(struct Node *ptr)    
{    
if(ptr->leftPtr) outv(ptr->leftPtr);    
cout<<ptr->Data<<' ';    
cout<<ptr->Name<<' ';    
if(ptr->rightPtr) outv(ptr->rightPtr);    
}    
void outu(struct Node *ptr)    
{    
if (ptr->rightPtr) outu(ptr->rightPtr);    
cout<<ptr->Data<<' ';    
cout<<ptr->Name<<' ';    
if (ptr->leftPtr) outu(ptr->leftPtr);    
}    
void  outtr(Node *ptr,int lb,int rb,int r)    
{if(ptr)    
 {gotoxy((lb+rb)/2,r);    
 cout<<ptr->Data<<' '<<ptr->Name<<endl;    
 outtr(ptr->leftPtr,lb,(lb+rb)/2,r+1);    
 outtr(ptr->rightPtr,(lb+rb)/2,rb,r+1);    
}    
}    
void del(Node **ptr,int d)    
{if(!*ptr)    
{cout<<"Files do date are not found!"<<endl;return;}    
if (d<(*ptr)->Data) del(&(*ptr)->leftPtr,d);    
else if(d>(*ptr)->Data) del(&(*ptr)->rightPtr,d);    
else    
{Node *lt,*rt;    
lt=(*ptr)->leftPtr;rt=(*ptr)->rightPtr;    
delete *ptr;    
*ptr=rt;    
while (*ptr)    
ptr=&(*ptr)->leftPtr;    
*ptr=lt;    
}    
}


Как реализовать удаление из бинарного дерева поиска.
Мне надо удалить все поддеревья число которово до числа введенного с
клавиатуры..
Желательно с кодом программы
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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