Поиск:

Ответ в темуСоздание новой темы Создание опроса
> реализация Б - дерева 
:(
    Опции темы
max07
Дата 9.11.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Подскажите как программно реализовать Б - дерево? С помощью структуры.

Код

struct BTree
{
  // код реализации
};


Спасибо.
PM MAIL   Вверх
_hunter
Дата 9.11.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



в смысле "как реализовать"? тебе готовое решение нужно?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_max07
Дата 9.11.2005, 19:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Nu nesovsem. Primernyi kod tolko
  Вверх
_hunter
Дата 9.11.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



примерный код:
struct BTree
{
BTreeNode* rootNode;
BTreeNode* GetRootNode();
};


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 9.11.2005, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а BTreeNode это что?

Это сообщение отредактировал(а) max07 - 9.11.2005, 22:12
PM MAIL   Вверх
_hunter
Дата 10.11.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



нода бинарного дерева...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 10.11.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот её то как и реализовать?
PM MAIL   Вверх
_hunter
Дата 10.11.2005, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



можеш как два указателя -- один на первую дочернюю, другой -- на следующую этого же уровня


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Guest
Дата 10.11.2005, 13:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

struct node
{
   int k;                 // data
   node *left;
   node *right;
};


Но это кажется будет простое двоичное дерево?
так чтоли? А уровень как описать?
  Вверх
_hunter
Дата 10.11.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Цитата
Но это кажется будет простое двоичное дерево?

ты, наверное, список имел в виду?..

Цитата
А уровень как описать?

что значит как? если тебе он нужен -- храни в ноде. можно и просто считать пробегая от текущей вверх...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_max07
Дата 10.11.2005, 16:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну так а можешь написать сам код нода этого?
  Вверх
_hunter
Дата 10.11.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



могу. ( но писать не буду ( из принципа ) )
если что-то нужно подсказать -- всегда пожалуйста...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 10.11.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Может так?

Код

struct elem
{
   inr key;
   struct n *left;     // левый указатель 
   struct n *right;  //  правый указатель
   int h;                 //  правый указатель горизонтальный
};

struct n
{
  struct elem a;
};


Мож я чё не то пишу. Нужно получит это:

--Resize_Images_Alt_Text--

Помоги, очень надо.
PM MAIL   Вверх
_hunter
Дата 10.11.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



странная запись...
+ этот рисунок абсолютно не говорит о структуре дерева -- можно ли по нему перемещаться только вперед ( обходить какой-нить рекурсивной функцией ) или нужно иметь возможность вернутся назад ( что на уровень что на ноду )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 10.11.2005, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот и говорю нужна помощь. Эта запись из книги. Преподы писали. Ничё не понятно если честно!
PM MAIL   Вверх
_hunter
Дата 10.11.2005, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ты, для начала, со структурой дерева определись...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_max07
Дата 10.11.2005, 20:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











не знаю как правильно на русском звучит
нужно получить Б дерево 1-ого порядка (может так)
например у него max количество элементов 2, min 1
n порядка max = 2n, min = n
  Вверх
_hunter
Дата 11.11.2005, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



я ж выше писал. как его плнанируется обходить/создавать? нужна ли возможность назад вернуться?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 13.11.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да нужна.
PM MAIL   Вверх
_hunter
Дата 14.11.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



значит структура должна хранить четыре указателя ( тип указателя -- эта же структура ): на предка, на первого из своих детей. и два на ноды своего уровня ( вперед и назад )
дожно быть два метода: для добавления ребенка и для добавления ноды этого же уровня ( так же их можно вынести в дерево ( так даже логичнее будет ) )
как работает добавление: создаеш новую ноду ( new ) и ставиш ей указатель на предка и возвратный в NULL -- она самая первая и указатель на следующую ставиш на бывшую первую. а той, которая была первая ставиш возвратный указатель на созданную.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
vlad21
Дата 28.11.2005, 07:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











to _hunter:
B-деревья и бинарные(двоичные) это разные вещи.

to max07:
Почитайте - Н.Вирт "Структуры+Алгоритмы=Программы"

Примерное описание структуры B-дерева:

//B страница (набор элементов)
class BPage
{
public:
//Элемент страницы
struct BItem
{
int key;
BPage * next;
};

BPage(BPage * _next0 = NULL, int _count = 0)
{
next0 = _next0;
count = _count;
}

protected:
int count; //Кол-во элементов на странице
BPage * next0;
BItem item[2*n];
};

//B-дерево
class BTree
{
protected:
BPage * root;
public:
BTree()
{
root = NULL;
}
};

  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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