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

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

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

> Число вхождений элемента E в дерево T, Описать процедуру или функцию, которая его определяет
сообщение
Сообщение #1


Новичок
*

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

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


Задача:
Цитата
type TED = <любой тип>;
дерево =^ верхушка;
верхушка = record
элемент: TED;
левая, правая: дерево;
end;
Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T.


Все что пока есть:
uses	crt;
type TED = integer;
t =^ top;
top = record
e: TED;
l, r: t;
end;
begin
clrscr;

readkey;
end.

Не понимаю как делать.
Нужно создать дерево (как?), заполнить его чем-то (чем? рандом или от пользователя... и как?), далее получить от пользователя элемент и посчитать сколько его есть в дереве.

Нашел в книге такой исходник:
function count(T: дерево; E: ТЭД): integer;
var S: стек;
k: integer;
begin
очистек(S);
k := 0; {число вершин с E}
while T <> nil do begin {T-ссылка на очередную вершину}
if T^.элем = E then k := k+l;
{переход к следующей вершине:}
if T^.лев <> nil then begin {есть ветвь влево}
if T^.прав <> nil then встек(S,T^.прав); {правую ветвь, если есть, - в стек}
T:=T^.лев {идти влево}
end
else if T^.прав<>nil then T:=T^.прав {идти вправо}
else {нет обоих ветвей} begin {взять ветвь из стека и идти по ней}
if пустек(S) then T := nil {конец просмотра}
else изстека(S,T)
end
end;
count := k
end;

Это то что мне нужно, не?
Стек - список?

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


На самом деле задача более чем странная. Обычно дерево строится так, что содержит только разные значения ключей (если нужна возможность хранить одинаковые ключи - в структуру, описывающую узел дерева, добавляется счетчик. При добавлении очередного элемента дерево просматривается, если значение уже хранится в дереве - то счетчик этого узла увеличивается и всё). При этом задача
Цитата
Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T.
теряет смысл. Если счетчика нет - то достаточно просмотреть дерево, и проверить, есть там искомый элемент, или нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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