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

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

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

 
 Ответить  Открыть новую тему 
> Help Me!, Бинарное дерево, нерекурсивный вариант
сообщение
Сообщение #1


Новичок
*

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

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


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

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



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


Новичок
*

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

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


Неужели никто не может мне помочь??!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


Пусть T – указатель на бинарное дерево; А – стек, в который заносятся адреса еще не пройденных вершин; TOP – вершина стека; P – рабочая переменная.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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) взял отсюда:
Создание бинарного дерева и обход
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


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


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

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


Гость






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

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

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


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


Новичок
*

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

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


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

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

 





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