, ( ) . leg n, - . , in, add delete , . , log . , . , . , . 10.1. , . , log n, . , , , , in, acid delete log n. , , , . .
in, add delete, log n. - ( 2-3) , - AVL-.
- . , , , .
.
.
- - , , . ( . 10.2.) , .
, .
, .
. 10.1. ; |
10.2. - ; 10 |
216 I. Prolog |
X - , . , Ml 2, :
|
|
X < Ml, ;
, X < 2, ;
.
, , . , X < , , . , , X, .
, - . , log , , .
- , . , , , . , , , , . . , . . 10.3.
. 10.3. - ; ,
- ; add23(Tree, X, NewTree)
NewTree , X Tree. , ins. :
ins* Tree, X, NewTree)
NewTree - X . Tree NewTree . , , . ins , , :
ins (Tree, X, NTa, Mb, HTb}
X Tree , NTa NTb, , Tree. Mb NTb. , , . 10.4.
10. 217
NTa
Mb 6
NTb
. 10.4. , ins ( Tree, 6, NTa, Mb, NTb}
- , , .
nil .
1 (X) X.
2 (1, , 2) , 1 2; 2.
|
|
(1, 2, 12, , ) , Tl, T2 ; 2 - 2, - .
Tl, T2 - .
add23 ins , , :
add2 3(Tree, X, NewTree):-ins (Tree, X, NewTree).
, ir-.s , 71 72, :
add23[ Tree, X, 2 (Tl, , 72) ):- ins Tree, X, Tl, , 2).
ins , : , , :.2 . , . , ins , , ins, . . 10.5. , , Prolog .
ins(n2 I 1, M, 12) X, 2(NT1,
gt(, X), ins(Tl, X, NT1].
, 2)):-
%
X
.ns(2(Tl, , 2, X, (NTla, Mb, HTlb, , 2) }:-
gt{ ,:■::,
ins{ Ti, X, NTla, Mb, NTlb].
ins (ri3 (Tl, H2, T2, , T3], X, n2 (NTla, Mb, NTlb), gt£ M2, X), ins(Tl, X, NTla, Mb, NTlb).
n2 (T2, , ))
218 I. Prolog
)
)
>
ins{T1,X,NT1)
=>
> sfTI.X.NTIa.Mb.NTIb) |
£'
2>
ins[T1,X, NTIa, Mb,NT1b)
, 10.5. ins: a) ins (2 <1, , 2), X, .2 (NT1, , T2));6)ins(2 {71, , 2), X, (NTIa, Mb, STlb, N T2)l;
) ins i (Tl,M2, 2, , }, X, n.2 (NTIa,Mb, NTlbj,M2, 2 (2, . )}
10.1 - , 10,2 - .
10.1. - ;
% -
add23[ Tree, X, Treel):-ins{ Tree, Xr Treel).
add23(Tree, X, n2 { Tl, MZ, T2}) ins(Tree, Xr Tl, M2, T2)..
del23i Tree, X, Treel):-add23(Treel, X, Tree).
4 X Tree, Treel %
:- % X Tree, Treel
ins(nil, , .)).
ins (1[), X, 1(A), X, 1()):-gt (X, ).
ins (1(A), X, 1(),, 1(A)):-gt(A, X).
- |
2}, , 2 (1, Ȼ 2))
ms(n2{ T1, gt(, X), ins(Tl, X, NTl).
Mb, NTlb, M, T2)) |
ins! n2[ Tl, M, T2), X, (MTI gt; , x),
ins (Tl, X, NTla, Mb, NTlb).
ins [ n2 (Tl, M, T2), X, n2 [ Tl, M, BT2]):-
gt{ x, M),
ins(T2, X, KT2). last n2 [ Tl, Mr T2), S, n3 [ Tl, M, MT2a, Mb, NT2b)) gt(X, M),
10.
ins I T2, X, HT2a, Mb, NT2b),
ins (n3 (Tl, M2, T2, M3, ), X, . NTl, M2, T2, M3, T3}):-gt (2, X),
ins [ Tl, x, NTl).
ins(n3(Tl, M2, T2, , T3), X, n2< ETla, Mb, NT lb), K2, nZ{ T2, M3, T3)l:-gt{ M2, x), ins(Tl, X, HTla, Kb, NTlb).
ins(n3 (Tl, M2, T2, , X, n3 [ Tl, M2, NT2, , )):-gt(x, M2), gt (, ), ins(T2, X, NT2).
insl (1, 2, T2r , ), X, 2 (1, N2, 2), Mb, r\2 £ 2, , }):-gtl X, 2), gt (, X), "inst T2, X, NT2af Mb, NT2b).
ins[ n3(Tl, M2, T2, , ), X, 3 1 1, 2, 2, , NT3)):-gt(X, ), ins(, , NT3).
ins[ (1, 2, 2, , ), X, 2(1, 2, 2), , n2(NT3a, Mb, NT3b) >:-
gt (;:, ),
ins! , X, , Mb', NT3b).
|
|
10.2. - () , . 10 .2, () ■ - _____________________________________________________ show { }:-show[T, 0), |
J |
shOTa |
nil,
show(1 (ft),H):-
tab[H), write (ft), nl.
T-
show(n2[Tl,M,T2), H) HI is H+b, show(T2, Hi), tab(H), write(--j, nl, tab[H), write(M), nl, tab[K), write (), nl, shcw(Tl, Hi).
show n3{ Tl, M2, T2 | |
Hi is H+5, | |
show(T3, Hi)r | |
tab(H), write!-->, | nl, |
tab(H), write(M3), | nl, |
show(T2, Hi) r | |
tab{H), write(M2),' | nl, |
tab(H), write(), | nl, |
show(Tl, Hi). |
T3), H)
-
-- | |||
12 10 | 12 10 | ||
1 | |||
4 3 | 4 3 1 |
I. Prolog
. , ins , ins . , , ins : ins2; Tree, X, HewTrees)
NewTrees - , 1 3, : HewTrees = [ UewTree], ins{ Tree, X, NewTree)
HewTrees = [ , Mb, NTb], ins (Tree, X, , Mb, NTb)
add.23 :
add23C T, X, 11):-ias2! , X, Trees), combine(Trees, TlJ.
combine , 71, Trees.
10.1.
in! Item, Tree)
Item - Tree.
10.2. , 10.1,
( ins2 combine).