.


:




:

































 

 

 

 


-




, ( ) . 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).





:


: 2015-10-01; !; : 656 |


:

:

,
==> ...

1534 - | 1512 -


© 2015-2024 lektsii.org - -

: 0.033 .