Алгоритм существенно упрощается при использовании рекурсии. Так, нисходящий обход можно описать следующим образом:
· 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 }