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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Копирование дерева через очередь(стек), Описание и процедуры в классах
Searcher
сообщение 21.01.2009 14:15
Сообщение #1


Новичок
*

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

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


Условие:Дано произвольное дерево, в узлах которого запись из двух целых чисел. Создать новое
дерево, в узлах которого будет запись, состоящая из меньшего из двух чисел и его номера
(1 или 2).
Решить нерекурсивно (через стек или очередь).
Вот я кое-что сделал, но что-то не получается с процедурой копирования. Помогите, пожалуйста, разобраться.
Прикрепленный файл  __________________.rar ( 12.62 килобайт ) Кол-во скачиваний: 354


Сообщение отредактировано: Searcher - 21.01.2009 14:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 21.01.2009 15:52
Сообщение #2


Гость






Поменяй свою реализацию CopyO вот на эту:
procedure TTree.CopyO(var T:TTree);
var
Q: TQueue;
tmp: TTree;

procedure ChangeRec(var rec:TInfo);
begin
if rec.first<=rec.second then rec.second:=1
else begin
rec.first:=rec.second;
rec.second:=2;
end;
end;

begin
q:=TQueue.Create;
q.Push(T);
while not q.isEmpty do begin
tmp := q.Pop;
if tmp.root <> nil then begin
q.Push(tmp.root.Left); q.Push(tmp.root.Right);
ChangeRec(tmp.root.info);
AddUpor(tmp.root.info);
end;
end;
end;
Понимаешь, что делается? Берешь из начала очереди элемент, и ставишь в конец очереди всех его потомков. Таким образом без рекурсии обрабатывается всё дерево.
 К началу страницы 
+ Ответить 
Searcher
сообщение 21.01.2009 16:02
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 21.01.2009 15:52) *

]Понимаешь, что делается? Берешь из начала очереди элемент, и ставишь в конец очереди всех его потомков. Таким образом без рекурсии обрабатывается всё дерево.

Ваша реализация работает несовсем как надо. Нужно чтобы ветвление полностью сохранялось как в исходном, а значения узлов менялись. В вашей реализации ветвление меняется.

Сообщение отредактировано: Searcher - 21.01.2009 16:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 13.07.2025 12:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"