Иерархическая печать дерева

Материал из Вики ИТ мехмата ЮФУ
Версия от 12:06, 30 апреля 2016; Ulysses (обсуждение | вклад) (Новая страница: «<source lang="pascal">procedure PrintlnTreeNested<T>(root: TreeNode<T>; width: integer; levelIndent, currIndent: string); begin …»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
procedure PrintlnTreeNested<T>(root: TreeNode<T>; width: integer; 
                               levelIndent, currIndent: string);
begin
  if root = nil then
    exit;
  var nextIndent := currIndent + levelIndent;
  PrintlnTreeNested(root.left, width, levelIndent, nextIndent);
  writeln(currIndent, root.data:width);
  PrintlnTreeNested(root.right, width, levelIndent, nextIndent);
end;

// Выводит содержимое бинарного дерева заваленным влево
procedure PrintlnTree<T>(root: TreeNode<T>; width: integer; levelIndent: string);
begin
  if root = nil then
    writeln('<empty tree>')
  else 
    PrintlnTreeNested(root, width, levelIndent, '');
end;