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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> Help Me!, Бинарное дерево, нерекурсивный вариант
B@®'o.K.
сообщение 20.11.2007 2:29
Сообщение #1


Новичок
*

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

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


Народ, помогите мне, плиз. Как вывести все элементы бинарного дерева нерекурсивным методом??

М
В следующий раз делай название темы более информативным
klem4



Сообщение отредактировано: klem4 - 21.11.2007 19:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
B@®'o.K.
сообщение 21.11.2007 0:52
Сообщение #2


Новичок
*

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

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


Неужели никто не может мне помочь??!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
B@®'o.K.
сообщение 21.11.2007 2:00
Сообщение #3


Новичок
*

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

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


Напишите плиз хотя бы код. Вот вам для помощи (я просто в этом мало понимаю):
1)Начальная установка: TOP:=0; P:=T.
2)Если P=nil, то перейти на 4. {конец ветви}
3)Вывести P^.info. Вершину заносим в стек: TOP:=TOP+1; A[TOP]:=P; шаг по левой ветви: P:=P^.llink; перейти на 2.
4)Если TOP=0, то КОНЕЦ.
5)Достаем вершину из стека: P:=A[TOP]; TOP:=TOP-1;
6)Шаг по правой связи: P:=P^.rlink; перейти на 2.

Пожалуйста!! Очень надо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
B@®'o.K.
сообщение 21.11.2007 2:24
Сообщение #4


Новичок
*

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

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


Пусть T – указатель на бинарное дерево; А – стек, в который заносятся адреса еще не пройденных вершин; TOP – вершина стека; P – рабочая переменная.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2007 12:18
Сообщение #5


Гость






var
root: ttree;
i: integer;

a: array[1 .. 50] of ttree;
p: ttree;
top: integer;

begin
root := nil;
for i := 20 to 30 do
additer(root, i);

p := root; top := 0;
while p <> nil do begin
writeln(p^.data);
inc(top);
a[top] := p;
p := p^.left;

if top > 0 then begin
p := a[top];
dec(top);
p := p^.right;
end;
end;
end.


Нерекурсивное добавление (additer) взял отсюда:
Создание бинарного дерева и обход
 К началу страницы 
+ Ответить 
B@®'o.K.
сообщение 21.11.2007 13:36
Сообщение #6


Новичок
*

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

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


А можно сделать описание ttree, а то я не знаю откуда оно взялось тут (т.е. с какиими параметрами), а также А сделать стеком, а не массивом. И, я думаю, процедуру добавления дерева можно убрать, т.к. мне нужно только вывести нерекурсивно. Пожалуйста, кто знает, исправте!! Буду очень благодарен.


Да и кстати. Это прога работает только наполовину (т.е. она выводит полдерева)

Сообщение отредактировано: B@®'o.K. - 21.11.2007 14:15
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2007 14:49
Сообщение #7


Гость






"Помочь" и "сделать все за тебя" - это немного разные вещи, тебе не кажется?

И вообще... Тот алгоритм, который ты привел, я запрограммировал. Слово в слово. Теперь выясняется, что тебе надо не на массивах, а на стеках. И добавление тебе, оказывается, тоже не надо. А проверять работу алгоритма ты что, теоретически будешь? Ну, так проверяй, значит тебе программа вообще не нужна.

Добавлено через 4 мин.
Цитата
Это прога работает только наполовину (т.е. она выводит полдерева)
Глазки открой, и посмотри на скриншот. Что ТЫ ожидал, что программа выведет?


Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
B@®'o.K.
сообщение 22.11.2007 3:00
Сообщение #8


Новичок
*

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

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


У меня уже ввод есть. Мне нужно только вывести нерекурсивно. У меня пользователь вводит сам числа дерева. А моя задача их вывести. Возможно ты просто неправильно меня понял. И поэтому если использовать как в твоём случае массив, то получается пользователь ограничивается числом вводимых элементов. Пожалуйста, если можно, исправьте эту прогу. Буду благодарен
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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