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

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
procedure PrintlnTreeHelp<T>(root: TreeNode<T>; width: integer; 
                               level: integer; levelIndent: string);
begin
  if root = nil then
    exit;

  PrintlnTreeNested(root.left, width, level + 1, levelIndent);
  writeln(levelIndent * level, root.data:width);
  PrintlnTreeNested(root.right, width, level + 1, levelIndent);
end;

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