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