1 / 1 / 3
Регистрация: 24.12.2009
Сообщений: 166
|
|
1
|
деревья
12.07.2010, 19:39. Показов 716. Ответов 0
Доброе время суток! помогите пожалуйста, не могу понять в чем проблема, хочу просмотреть построения дерева через модуль. все читает, но не выписывает дерево
Pascal | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| unit t1;
{$mode objfpc}{$H+}
interface
type
tarray=array of word;
basetype=integer;
tree=^node; node=record
info:basetype;
left,right:tree; end;
var key,b,a:tarray;
procedure balltree(var p:tree; x:basetype) ;
procedure pr(p:tree;n :integer);
procedure init(n_:word);
procedure destroy;
implementation
var n:word;
procedure balltree(var p:tree; x:basetype) ;
begin if assigned(p)
then begin
if x<p^.info then balltree(p^.right,x);
if x>p^.info then balltree(p^.left,x)
else
begin
new(p);
p^.info:=x;
p^.left:=nil;
p^.right:=nil;
end;end; end;
procedure pr(p:tree;n :integer);
var i: integer;
begin
if assigned(p) then begin
if p^.right<>nil then pr(p^.right,n+1);
for i:=1 to n do write(' ');
writeln(p^.info);
if p^.left<>nil then pr(p^.left,n+1);end
; end;
procedure init(n_: word);
var i, j: word;
begin
n := n_;
setlength(key,n*sizeof(word));
for i := 1 to n do key[i] := 0;
end;
procedure destroy;
var i: word;
begin
finalize(key);
end;
begin end. |
|
основная
Pascal | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| program pr_t;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
{$ENDIF}{$ENDIF}
t1 in 't1.pas';
{ you can add units after this }
var i,n:word;
root:tree;
{$IFDEF WINDOWS}{$R pr_t.rc}{$ENDIF}
begin
readln(n);
init(n);
for i := 1 to n do begin
read(key[i]); end;
//balltree(root,key[i]);
pr(root,key[i]);
readln;
destroy ;
end.
[size="1"][color="grey"][I]Добавлено через 38 минут[/I][/color][/size]
или почему эта при построение идеально-сбалансированного не идет? пожалуйста помогите!
Program BalansTree;
Uses
Crt;
Type
Pt = ^Node;
Node = record
Data : integer;
Left, Right : Pt;
end;
Var
n : integer;
kd : Pt;
Function Tree(n : integer) : Pt;
Var
NewNode : Pt;
x, n1, n2 : integer;
Begin
if n=0
then
Tree := Nil
else
begin
n1 := n Div 2; end; begin
n2 := n–n1–1;
read(x);
new(NewNode);
with NewNode^ do
begin
Data := x;
Left := Tree(n1);
Right := Tree(n1);
end;
Tree := NewNode;
end;
End;
Procedure PrintTree(t : Pt; h : integer);
Var
i : integer;
Begin
if t<>nil
then
with t^ do
begin
PrintTree(Left, h+1);
for i := 1 to h do
write(' ');
writeln(Data:6);
PrintTree(Right, h+1);
end;
End;
Begin
ClrScr;
write('n=');
readln(n);
kd := Tree(n);
PrintTree(kd, 0);
readln;
End. |
|
0
|