До сих пор мы рассматривали структуры данных, данные в которых располагаются линейно. В связном списке — от первого узла к единственному последнему. В динамическом массиве — в виде непрерывного блока.
В этой части мы рассмотрим совершенно новую структуру данных — дерево. А точнее, двоичное (бинарное) дерево поиска (binary search tree). Бинарное дерево поиска имеет структуру дерева, но элементы в нем расположены по определенным правилам.
Также смотрите другие материалы этой серии: стеки и очереди, динамический массив, связный список, оценка сложности алгоритма, сортировка и множества.
Для начала мы рассмотрим обычное дерево.
Деревья
Дерево — это структура, в которой у каждого узла может быть ноль или более подузлов — «детей». Например, дерево может выглядеть так:

Структура организации
Это дерево показывает структуру компании. Узлы представляют людей или подразделения, линии — связи и отношения. Дерево — это самый эффективный представления и хранения такой информации.
var s,s1:string; i:integer;
mn:set of 'a'..'z';
function f(c:char;m:set of 'a'..'z'):boolean;
begin
f:=(not (c in m))and(c in ['a'..'z'])
end;
begin
writeln('Введите строку:');readln(s);
mn:=[];s1:='';
for i:=1 to length(s) do
if f(s[i],mn) then
begin
mn:=mn+[s[i]]; s1:=s1+s[i];
end;
writeln(s1);
end.
Пример работы:
Введите строку:
this is an example text.
thisanexmpl