РЕКУРСИВНЫЙ НИСХОДЯЩИЙ ОБХОД.

Алгоритм существенно упрощается при использовании рекурсии. Так, нисходящий обход можно описать следующим образом:

· 1). Обработка корневой вершины;

· 2). Нисходящий обход левого поддерева;

· 3). Нисходящий обход правого поддерева.

Алгоритм рекурсивного нисходящего обхода реализован в программном примере 6.5.

{=== Программный пример 6.5. Рекурсивное выполнение нисходящего обхода ===}

Procedure r_Preorder (t: TreePtr);

begin

if t = nil then begin writeln('Дерево пусто'); exit; end;

(*------------------- Обработка данных звена --------------*)

................................

if t^.left <> nil then r_Preorder(t^.left);

if t^.right <> nil then r_Preorder(t^.right);

End; { r_Preorder }