Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Бинарное дерево   Найти похожие ветки 

 
ReStudent ©   (2005-10-08 18:51) [0]

Помогите написать программу, реализующую метод построения бинарного дерева и дальнейший поиск по нему, используя динамическую структуру данных для организации дерева (не TTreeView). В качестве исходных данных для заполнения дерева использовать массив с случайными словами.

Алгоритм заполнения дерева:
1.  Выбрать очередной идентификатор из входного потока данных. Если очередного идентификатора нет, то построение дерева закончено.

2.  Сделать текущим узлом дерева корневую вершину.

3.  Сравнить имя очередного идентификатора с именем идентификатора, содержащегося в текущем узле дерева.

4.   Если имя очередного идентификатора меньше, то перейти к шагу 5, если равно — прекратить выполнение алгоритма (двух одинаковых идентификаторов быть не должно!), иначе — перейти к шагу 7.

5.   Если у текущего узла существует левая вершина, то сделать ее текущим узлом и вернуться к шагу 3, иначе — перейти к шагу 6.

6.   Создать новую вершину, поместить в нее информацию об очередном идентификаторе, сделать эту новую вершину левой вершиной текущего узла и вернуться к шагу 1.

7.   Если у текущего узла существует правая вершина, то сделать ее текущим узлом и вернуться к шагу 3, иначе — перейти к шагу 8.

8.   Создать новую вершину, поместить в нее информацию об очередном идентификаторе, сделать эту новую вершину правой вершиной текущего узла и вернуться к шагу 1.

Алгоритм поиска по дереву:
1.   Сделать текущим узлом дерева корневую вершину.

2.   Cравнить имя искомого идентификатора с именем идентификатора, содержащимся в текущем узле дерева.

3.   Если имена совпадают, то искомый идентификатор найден, алгоритм завершается, иначе надо перейти к шагу 4.

4.   Если имя очередного идентификатора меньше, то перейти к шагу 5, иначе - перейти к шагу 6.

5.   Если у текущего узла существует левая вершина, то сделать ее текущим узлом и вернуться к шагу 2, иначе — искомый идентификатор не найден, алгоритм завершается.

6.   Если у текущего узла существует правая вершина, то сделать ее текущим узлом и вернуться к шагу 2, иначе — искомый идентификатор не найден, алгоритм завершается.


 
Zeqfreed ©   (2005-10-08 19:00) [1]

ReStudent ©   (08.10.05 18:51)
А тебе нужно именно помочь написать программу, или написать программу? Если второе, то ты забыл кое-что указать - цену, а если первое, то ты забыл указать с чем конкретно помочь и в чем у тебя возникли трудности.


 
TUser ©   (2005-10-09 11:35) [2]

Алгоритм описан детально. Осталось перевести его  на Паскаль.


 
Igorek ©   (2005-10-10 10:38) [3]

Напишу. Строка кода - бакс. Предоплата.


 
ReStudent ©   (2005-10-11 17:05) [4]

Сюда вообще похоже бесполезно писать.
Все зарабатывают.


 
Джо ©   (2005-10-11 17:07) [5]


>  [4] ReStudent ©   (11.10.05 17:05)
> Сюда вообще похоже бесполезно писать.
> Все зарабатывают.

Не все. Некоторые еще и студенты-двоешники :)


 
ReStudent ©   (2005-10-11 17:09) [6]

Такая простая для кодера прога. Раз плюнуть для него. Доллар - строка.. блин.


 
Ketmar   (2005-10-11 17:10) [7]

>ReStudent ©   (11.10.05 17:05) [4]
а ты думал, за твои домашние задания тут драка будет -- кто достойней их напишет?


 
TUser ©   (2005-10-11 17:30) [8]

> Такая простая для кодера прога. Раз плюнуть для него. Доллар - строка.. блин.

А еще вот для кодера на форуме постить - не проблема. Они же не будут за тебя вопросы задавать. :)


 
Игорь Шевченко ©   (2005-10-11 17:34) [9]

ReStudent ©   (11.10.05 17:09) [6]


> Такая простая для кодера прога. Раз плюнуть для него. Доллар
> - строка.. блин.


Это демпинг. На самом деле - доллар минута, но для студентов делается скидка.


 
boriskb ©   (2005-10-11 17:38) [10]

ReStudent ©   (08.10.05 18:51)
написать программу,


Интересно как!
Так она в твоем же посте ниже написана!
Тебе закодить? И не осилишь?
Ты даже не двоешник - хуже.


 
Seg   (2005-10-11 17:44) [11]

Такая простая для кодера прога

Вот и обращайся к кодерам, а здесь программисты...


 
Ketmar   (2005-10-11 17:51) [12]

>Seg   (11.10.05 17:44) [11]
не все. я -- кодер. термин понимать, исходя из реалий demomaking"а.


 
pasha_golub ©   (2005-10-11 17:54) [13]

А может у автора дети малые, жена и теща на шее, а сам он с утра до ночи работает, вагоны разгружая. А вы так на него... Изверги.


 
Игорь Шевченко ©   (2005-10-11 17:55) [14]

pasha_golub ©   (11.10.05 17:54) [13]

А нафига ему тогда программа ? :)


 
Ketmar   (2005-10-11 17:56) [15]

>Игорь Шевченко ©   (11.10.05 17:55) [14]
оптимизировать процесс разгрузки вагонов и траекторию спирания грузов.


 
pasha_golub ©   (2005-10-11 18:01) [16]

Ketmar   (11.10.05 17:56) [15]
Прально, грузы можно ведь складывать в виде бинарного дерева, а потом быстро искать


 
DiamondShark ©   (2005-10-11 18:02) [17]

Тогда бакса за строку маловато будет...


 
Ketmar   (2005-10-11 18:13) [18]

>DiamondShark ©   (11.10.05 18:02) [17]
дык это ж только начало торга...


 
ReStudent ©   (2005-10-11 20:47) [19]

невпепенно крутые программисты


 
Kerk ©   (2005-10-11 20:52) [20]

ReStudent ©   (11.10.05 20:47) [19]

"втупил в разговор" (с)

:))


 
ReStudent ©   (2005-10-11 20:54) [21]

может ещё и за трёп бабло будете брать?


 
Gero ©   (2005-10-11 20:55) [22]


> ReStudent ©

С чем возникли проблемы при написании?


 
Gero ©   (2005-10-11 20:57) [23]


> может ещё и за трёп бабло будете брать?

Может и будем.


 
ReStudent ©   (2005-10-11 21:07) [24]


> С чем возникли проблемы при написании?

Допустим структура задана, дерево заполнено.
Как и где указывается корень дерева? Чтоб сделать текущий указатель корнем дерева.


 
Kerk ©   (2005-10-11 21:15) [25]

ReStudent ©   (11.10.05 21:07) [24]
Допустим структура задана, дерево заполнено.


Нифига не допустим. Если все это сделано, то проблем с корнем у тебя не будет.


 
TUser ©   (2005-10-11 21:43) [26]

> Как и где указывается корень дерева?

При этом существует переменная, которая есть, например, указатель на корень дерева.

> Если все это сделано, то проблем с корнем у тебя не будет.

А вот это, кстати, не факт. Я тут рассказал про сортировку двусвязного списка. Рассказывал студентке одной. Вроде бы ей было не понятно, что элементы этого списка просты ссылаются друг на друга, не обызаны идти последовательно в памяти, и что надо просто переписать указатели. Простые вещи могут вызывать у начинающих затруднения - это нормально.


 
Kerk ©   (2005-10-11 21:47) [27]

TUser ©   (11.10.05 21:43) [26]
Простые вещи могут вызывать у начинающих затруднения - это нормально.


Ну это понятно. Просто не пойму.. как можно построить дерево, но не знать где у него корень. ИМХО тут скорее проблема в непонимании того как дерево строится.


 
TUser ©   (2005-10-11 21:49) [28]

> ИМХО тут скорее проблема в непонимании того как дерево строится.

Проблема - в непонимании, как готовый алгоритм преобразовать в код, имхо.


 
ReStudent ©   (2005-10-11 21:56) [29]

У меня такого указателя - на корень. Есть просто указатель на узел, на правй и левй подузел. И всё.


 
ReStudent ©   (2005-10-11 22:00) [30]

Type pt=^node;
node = Record
Data : string[10];
left,right : pt;
end;


 
Sergey_Masloff   (2005-10-11 22:08) [31]

Ну так указатель на корень и будет деревом. Если он nil то дерево пустое. Если он не nil но у того узла на который он указывает left = right = nil то это дерево из одного корня. И так далее


 
Igorek ©   (2005-10-11 22:39) [32]


> Просто не пойму.. как можно построить дерево, но не знать
> где у него корень. ИМХО тут скорее проблема в непонимании
> того как дерево строится.

Запросто. Любой ацикличный граф - это дерево. Ты дерево сделал и послал кому-то. Ты не знаешь где корень (для тебя это граф, хотя ты в курсе, что это дерево, но не знаешь где корень), получатель - знает (для него это дерево). Во загнул! :)


 
Игорь Шевченко ©   (2005-10-11 23:44) [33]


> может ещё и за трёп бабло будете брать?


Будем. за букву наших ответов - с тебя рупь. Иначе - бан.

Халявщики - маст дай.


 
Lamer@fools.ua ©   (2005-10-11 23:58) [34]

>>Игорь Шевченко ©   (11.10.05 23:44) [33]

>Халявщики - маст дай.

Не, это не наш метод. Халявщики маст ворк хард!


 
Труп Васи Доброго ©   (2005-10-12 00:14) [35]

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

Бинарное дерево является рекурсивной структурой, поскольку каждое его поддерево само является бинарным деревом и, следовательно, каждый его узел в свою очередь является корнем дерева.

Узел дерева, не имеющий потомков, называется листом.

Теперь проблем с определением корня нет???


 
ReStudent ©   (2005-10-13 09:32) [36]

Удалено модератором


 
Kerk ©   (2005-10-13 09:34) [37]

ReStudent ©   (13.10.05 9:32) [36]

Абсолютно точно. Точно Мастдай. Ты в том числе.


 
ReStudent ©   (2005-10-13 19:53) [38]

Удалено модератором


 
Kerk ©   (2005-10-13 19:57) [39]

Удалено модератором


 
ReStudent ©   (2005-10-14 11:16) [40]

Удалено модератором



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.036 c
14-1129638098
vanek_kg
2005-10-18 16:21
2005.11.06
где взять


2-1129024501
Rolf
2005-10-11 13:55
2005.11.06
Ошибка при создании ComboBox.


3-1127375236
Jioniro
2005-09-22 11:47
2005.11.06
Поиск по контексту с помощью SQL запроса


3-1127490087
bbn
2005-09-23 19:41
2005.11.06
Tools to MS SQL


2-1129195930
DancerMan
2005-10-13 13:32
2005.11.06
dxDBTreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский