Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal]Построение бинарного дерева


Автор: Paulskit 17.4.2008, 00:10
В общем задача довольно примитивная - построить и вывести на просмотр бинарное дерево со структурой :
      n
     / \
 n-1   n-1

   / \  / \

  ..........

    2      2

   / \     / \

  1   1 1   1

Я думаю глубину дерева можно задать через константу. Спасибо, заранее.

Автор: Rodman 17.4.2008, 11:54
http://valera.asf.ru/delphi/lab/Lab8.html?
ЗЫ: смотреть в IE!

Автор: Paulskit 17.4.2008, 18:26
Не совсем то - у меня проблема сформировать и вывести все как нужно.

Автор: volvo877 18.4.2008, 01:31
Цитата(Paulskit @  17.4.2008,  17:26 Найти цитируемый пост)
у меня проблема сформировать и вывести все как нужно. 
Вот тут лежит то, что тебе поможет: http://volvo71.narod.ru/faq_folder/bin_tree.htm#bintree_graph

(там чуть выше - про формирование дерева, я не думаю, что это является основной проблемой, основная - как раз графическое представление, так?) Учти, чем дерево "глубже", тем хуже отображение... Но все-таки попробуй...

Автор: Paulskit 19.4.2008, 20:10
Спасибо, написал.

Может кому пригодится - вот мой код:
Код

Program p_tree;
uses Crt;
type ptr=^node;
     node=record
            data :integer;
            left,
            right :ptr;
          end;
var n:integer;
    root :ptr;
    k :integer;

function Step(x:integer;n:word):integer;
var m:integer;
    i:word;
begin
  m:=1;
  for i:=1 to n-1 do m:=m*x;
  Step:=m;
end;

function tree (AmountNode:byte):ptr;
var newnode :ptr;
    LeftNodes,
    RightNOdes :integer;
    str :integer;
begin
  if AmountNode=0 then
     tree:=nil
     else
     begin
       LeftNodes:=AmountNode div 2;
       k:=k-1;
       New (newnode);
       with newnode^ do
       begin
         data:=k;
         left:=Tree(LeftNodes);
       end;
     Tree:=newnode;
     end;
end;

procedure PrintTree (RootTree:ptr;L:byte);
var i :integer;
begin
  if RootTree<>nil then
     with RootTree^ do
     begin

       PrintTree (left, l+1); Writeln;
       for i:=1 to L do write ('           ');
       write (data);
       PrintTree (left,L+1);

     end;
end;

begin 
  Сlrscr;
  writeln ('Display tree ');
  writeln ('Enter number of nodes'); readln (n); k:=n+1;
  n:=Step(2,n);
  root:=Tree(n);
  Clrscr;
  writeln ('Created tree');
  PrintTree (root,0);
  readln
end.

Автор: Рыся 25.6.2010, 22:19
А можно коментарии к данной программе, пожалуйста, а именно к функциям.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)