А2. Подсчет количества узлов в бинарном дереве

 
 

А3. Подсчет количества листьев бинарного дерева

 
 
function Number(Tree:PNode):integer; begin if Tree = Nil then Number := 0 {дерево пустое – листов нет} else if(Tree^.left=Nil) and (Tree^.right=Nil) then Number := 1 {дерево состоит из одного узла - листа} else Number := Number(Tree^.left) + Number(Tree^.right); {end if} end;

 

 


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

Примечание: Просмотр используется не сам по себе, а для обработки элементов дерева, а просмотр сам по себе обеспечивает только некоторый порядок выбора элементов дерева для обработки. В приводимых ниже примерах обработка не определяется; показывается только место, в котором предлагается выполнить обработку текущего