Иерархическая печать дерева — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) (Новая страница: «<source lang="pascal">procedure PrintlnTreeNested<T>(root: TreeNode<T>; width: integer; levelIndent, currIndent: string); begin …») |
Ulysses (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | <source lang="pascal">procedure | + | <source lang="pascal">procedure PrintlnTreeHelp<T>(root: TreeNode<T>; width: integer; |
− | levelIndent | + | level: integer; levelIndent: string); |
begin | begin | ||
if root = nil then | if root = nil then | ||
exit; | exit; | ||
− | + | ||
− | PrintlnTreeNested(root.left, width, levelIndent | + | PrintlnTreeNested(root.left, width, level + 1, levelIndent); |
− | writeln( | + | writeln(levelIndent * level, root.data:width); |
− | PrintlnTreeNested(root.right, width, levelIndent | + | PrintlnTreeNested(root.right, width, level + 1, levelIndent); |
end; | end; | ||
// Выводит содержимое бинарного дерева заваленным влево | // Выводит содержимое бинарного дерева заваленным влево | ||
− | procedure PrintlnTree<T>(root: TreeNode<T>; width: integer; levelIndent: string); | + | procedure PrintlnTree<T>(root: TreeNode<T>; width: integer := 4; levelIndent: string := ' '); |
begin | begin | ||
if root = nil then | if root = nil then | ||
writeln('<empty tree>') | writeln('<empty tree>') | ||
else | else | ||
− | + | PrintlnTreeHelp(root, width, 0, levelIndent); | |
end;</source> | end;</source> |
Текущая версия на 12:10, 30 апреля 2016
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;