.


:




:

































 

 

 

 


M 2




. 10.7. AVL-

, NewTree, AVL-, , . , 1 :

combine(

Tl/HI, A, t(T21fB,T22) / 2, , /, %

t(t(Tl/Hl,A, 21)/, , t (T22, , /) /) /):- %

2 > HI, H2 > , % -

is Hi + 1, %

is + i, I

is + 1. %

addavl, , 10.3.


10.



10.3. AVL-;. ( combine . . 10.7)

% addavl-! Tree, X, NewTree): AVL-

% Tree = t(Left, Root, Kight)/KeightOfTree

% - nil/0

addavl(nil/0, X, t(nil/0,X,nil/0)/1). % X

addavl (t (L, Y, .)/, X, NewTree}:- %

gtf y, X),

addavl(L, X, t(Li,Z,L2)/_),

combine (LI, Z, L2, Y, R, NewTree). %

addavl (t(L,Y,R)/Hy, X, NewTree):-gt |X, Y),

addavl(R, X, t(Rl,Z,R2)/_), % E

combine; L, Y, Rl, Z, R2, NewTree).

^ combine(Treel, A, Tree2, , , NewTree):

% Treel, Tree2, AVL- combine! Tl/Hl, A, t(21,,22)/2, , /,

t[ t(Tl/Hl,A,T21)/, , t(T22,,/)/)/):-

2 > HI H2 > , % -

is HI + 1, is + 1, is + 1.

combine! Tl/Hl, A, T2/H2, , /,

t(Tl/Hl, A, t(2/2,,/)/)/ i:-
HI >= 2, HI > = , %

max! (2, , !, maxl(HI, He, ).

combine! Tl/Hl, A, T2/H2, , /,

t(t[Tl/Hl,A,T2/H2)/Ha, , /}/):-
>2, 113 >- HI, h

maxl (HI, H2, ), , , ).

raaxl [ U, V, ):- % 1 + , F V

U > V,!, is + 1; is V + 1,

. , , . ( ), -1,0 +1. .

10.3. avi(Tree)

, AVL- Tree; , 1. , t { Left, Root, Right) nil.



!. Prolog


10.4. AVL-, 5, 8, 9, 3, 1, 6, 7. ?

AVL-, ,

.


: ,
. ,
log n, .





:


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


:

:

, .
==> ...

1709 - | 1520 -


© 2015-2024 lektsii.org - -

: 0.009 .