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

Структура организации
Это дерево показывает структуру компании. Узлы представляют людей или подразделения, линии — связи и отношения. Дерево — это самый эффективный представления и хранения такой информации.
Блок-схемы - во вложениях
1.
Program Irina09Gross1;
const n=10;
var a,b,c,p,s: real;
begin
writeln('*** Alphaues is thinking... ***');
writeln('*** OK! ***');
writeln();
writeln('Введите стороны треугольника');
write('Введите а');
readln(a);
write('Введите b');
readln(b);
write('Введите c');
readln(c);
p:=(a+b+C)/2;
S := sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Площадь треугольника равна ',s);
end.
2.
Program Irina09Gross2;
const n=10;
var a,b,h,v,s,r: real;
begin
writeln('*** Alphaues is thinking... ***');
writeln('*** OK! ***');
writeln();
write('Введите длину основания ');
readln(a);
write('Введите ширину основания ');
readln(b);
write('Введите высоту параллелепипеда ');
readln(h);
s := 2*(a*b+b*h+h*a);
v := a*b*h;
r := 4*(a+b+h);
writeln('Объём равен ',v);
writeln('Площадь полной поверхности равна ',s);
writeln('Сумма рёбер равна ',r);
end.
