Иерархическая печать дерева — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «<source lang="pascal">procedure PrintlnTreeNested<T>(root: TreeNode<T>; width: integer; levelIndent, currIndent: string); begin …»)
 
 
Строка 1: Строка 1:
<source lang="pascal">procedure PrintlnTreeNested<T>(root: TreeNode<T>; width: integer;  
+
<source lang="pascal">procedure PrintlnTreeHelp<T>(root: TreeNode<T>; width: integer;  
                               levelIndent, currIndent: string);
+
                               level: integer; levelIndent: string);
 
begin
 
begin
 
   if root = nil then
 
   if root = nil then
 
     exit;
 
     exit;
  var nextIndent := currIndent + levelIndent;
+
 
   PrintlnTreeNested(root.left, width, levelIndent, nextIndent);
+
   PrintlnTreeNested(root.left, width, level + 1, levelIndent);
   writeln(currIndent, root.data:width);
+
   writeln(levelIndent * level, root.data:width);
   PrintlnTreeNested(root.right, width, levelIndent, nextIndent);
+
   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  
     PrintlnTreeNested(root, width, levelIndent, '');
+
     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;