помогите разобраться с деревом
 Добавлено: 03.01.2010 02:56:55
Добавлено: 03.01.2010 02:56:55пытаюсь построить бинарное дерево по принципу направо больший налево меньший, и отсортировать по нему массив, но вот гдето закрались баги. подскажите плиз где накосячил. вот код:
			- Код: Выделить всё
- program treemake;
 uses crt;
 const
 n = 10;
 type
 ptr = ^tr;
 tr = record
 data : integer;
 left : ptr;
 right : ptr;
 end;
 var
 tree : ptr;
 mas : array[1..n] of integer;
 j,k : integer;
 procedure addleaf(var a : ptr; b : integer); {добавление эл-та}
 var
 x,y : ptr;
 begin
 new(x);
 x^.data := b; x^.left := nil; x^.right := nil;
 if a = nil then a := x
 else
 begin
 y := a;
 while y <> nil do
 begin
 if x^.data < y^.data then y := y^.left
 else y := y^.right;
 end;
 x := y;
 end;
 end;
 procedure MakeTree(var a : ptr; b : array of integer);
 var
 i : integer;
 begin
 for i := 1 to n do AddLeaf(a,b[i]);
 end;
 procedure PrintTree(a : ptr); {обход дерева в обратном порядке}
 begin
 if a^.left <> nil then PrintTree(a^.left);
 write(a^.data,' ');
 if a^.right <> nil then PrintTree(a^.right);
 end;
 begin
 clrscr;
 randomize;
 for j := 1 to n do
 begin
 mas[j] := random(n);
 write(mas[j],' ');
 end;
 new(tree);
 writeln;
 MakeTree(tree,mas);
 PrintTree(tree);
 readkey;
 end.
 . А потом, "с барского плеча" предложил свой способ вывода, который как раз на древовидной структуре работать и не будет
 . А потом, "с барского плеча" предложил свой способ вывода, который как раз на древовидной структуре работать и не будет