IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Создание бинарного дерева и обход, НЕРЕКУРСИВНО!!!
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


нужно к завтраму...
Вот несколько вопросиков вызывают затруднения...
1-создание бинарного дерева нерукурсивно...2-обход бинарного дерева с помощью очереди, в основном интересует сам алгорит а не программная реализация...помогите плиз весь инет облазил-пусто... unsure.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Здесь был: Обходы ордерева в глубину и в ширину
?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


СПС громаднейшее, и как вы находи это, Я 2 дня в инете жил не нашео=(
а что насчет 1 вопроса... rolleyes.gif ...сорри за наглость сессия е-мое... mega_chok.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


НУ народ посдкажи те про дерево плиз...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Ну, в принципе, и с созданием дерева БЕЗ рекурсии тоже нет проблем:
Procedure AddIter(Var root: TTree; X: TType);

{ Функция, создающая новый лист дерева с заданным значением Data }
Function CreateNode(n: TType): TTree;
var p: TTree;
Begin
New(p);
p^.Data := n;
p^.Left := nil; p^.Right := nil;
CreateNode := p;
End;

var
parent, pwalk: TTree;

Begin

{
Если корень дерева - нулевой (только начали заполнять дерево, например),
то создаем новый элемент и запоминаем его, как корень
}
if root = nil then root := CreateNode(X)
else begin

{ Если дерево уже не пустое - тогда начинаем "прогулку" по нему... }

pWalk := root; { "гулять" начнем с корня }
while pWalk <> nil do begin { пока не добрались до пустого указателя - делаем следующее }

{ запоминаем текущий элемент, в качестве "родителя" его потомка }
parent := pWalk;

{
переходим в левую лил правую ветвь в зависимости от соотношения величин
нового элемента и "текущего", которым мы "гуляем" по дереву
}
if X < pWalk^.data then pWalk := pWalk^.left
else pWalk := pWalk^.right

end;

{
Если мы здесь - значит, добрались до пустого указателя...
Вот теперь делаем то, для чего запоминали родителя текущего элемента:
опять же в зависимости от того, больше или меньше добавляемое значение,
чем значение "родителя", создаем новый элемент и запоминаем его в левой,
или правой ветке...
}

if X < parent^.data then parent^.left := CreateNode(X)
else parent^.right := CreateNode(X);

end;

End;
Элемент X будет добавлен к дереву... Как видишь, процедура нерекурсивная...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


А можешь объяснить алгоритм хотя бы в 2-х словах? плиз wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


См.личку плиз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Комментарии добавлены ...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 23:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name