You are on page 1of 12

10.1.

CTeKH u ociepeJJ:H

CTeKH H oqepe,n:H npe,n:cTaBAAIOT co6ou: JJ:HHaMHqecme MHO:>KeCTBa, 3JieMeHTbl H3


KOTOpbIX y,n:a.JUIIOTCjf C IlOMOW:blO npe,n:BapHTeJibHO onpe,n:erreHHOH onepaUHH DELETE.
IlepBbIM H3 cmeKa (stack) y,n:a.JUieTcg 3JieMeHT, KOTOpbIH 6hm noMeII.J,eH ry,n:a nocrre,n:­
HHM: B CTeKe peaJIH3yeTCjf CTPaTerHjf "noCJledHUM 60UU!Jl - nep6blM 61,1,Ul.eJl" (last-in,
first-out - LIFO). AHaJiornqHo B o'l.epet)u (queue) Bcer.n:a )?]:a.mieTcg 3JieMeHT,
KO­TOpbIH co.n:ep:>KHTCjf B MHO:>KecTBe ,n:OJibIIIe ,n:pyrHx: B oqepe,n:H peaJIH3YeTCjf
CTpaTerIDI "nepBblM BOUl.eJl - nepBblM 6blU1.eJ1" (first-in, first-out - FIFO). C)'ll.lecTByeT
HeCKOJib­KO 3<p<peKTHBHbIX cnoco60B peaJIH3aUHH CTeKOB H oqepe,n:eu: B KOMilblOTepe. B
,n:aHHOM pa3,n:erre 6y,n:eT TIOKa3aHO, KaK peaJIH3OBaTb o6e 3TH CTpYKTY])bl ,n:aHHbIX C
TIOMOW:blO 06b1qHoro MaCCHBa.

CTeKH
OnepaQHjf BCTaBKH INSERT npHMeHHTeJibHO K CTeKaM qacTO Ha3bIBaeTCjf 3aTIHCblO
B CTeK PUSH, a onepauHjf y,n:aJieHHjf DELETE, KOTOpM Bbl3bIBaeTCjf 6e3 nepe,n:aqH ap­
ryMeHTa, - CHjfTHeM co CTeKa POP.
KaK BHJJ:HO H3 pHC. 10.1, CTeK, cnoco6HbIH BMeCTHTb He 6orree n 3JieMeHTOB, MO:>KHO

peaJIH3OBaTb C TIOMOII.J,blO MaCCHBa S[l .. n]. 3TOT MaCCHB o6rra,n:aeT aTpH6YTOM top, s.
npe,n:cTaBAAIOII.J,HM co6ou: HH,n:eKC nocrre,n:Hero TIOMemeHHOro B CTeK 3JieMeHTa. CTeK
cocTOHT H3 3JieMeHTOB S[l .. S. top], r.n:e S[l] - 3JieMeHT Ha ,n:He cTeKa, a S[S. top]
- 3JieMeHT Ha ero BepIIIHHe.

EcrrH s.top =
0, TO CTeK He co,n:ep:>KHT HH OJJ:HOro 3JieMeHTa H jfBJijfeTCjf nycmblM
(empty). IlpOTeCTHpOBaTb CTeK Ha HaJIHqHe B HeM 3JieMeHTOB MO:>KHO C IlOMOW:blO one-

pauHH-3anpoca STACK-EMPTY. EcnH 81,IDOJIIDleTC.R


IlOill,ITKa CIDITHJI 3JieMeHTa C ny­CTOro cTeKa, rosop.RT, 1ITO
OH onycmo,uaemcR (underflow), 1-ITO 061,Jtrno npHBOJJ.HT K
oIIIH6Ke. EcnH 3Ha1IeHHe S. top 6on1,me n, TO cTeK
nepenoJ1H11emCR ( overflow). (B npe)].CTaeneHHOM HH)l(e
nceB)].OKO)].e 803MO)l(HOe nepenOJIHeHHe BO BHHMaHHe He
npHHHMaeTC.R.)
KruK.ZzyJO onepaumo Ha)]. CTeK0M MO)l(HO Jienco
peanH3088Tb HeCKOJil,KHMH CTpOKaMH K0)].a.
ENQUEUE(Q, x)
STACK-EMPTY(S)
1 Q[Q. tail] = x
1 if S. top == 0 2 if Q. tail == Q. length
Q.tail = 1
2 return TRUE 3
4 else Q. tail = Q. tail+ 1
3 else return FALSE
DEQUEUE(Q)
1 x = Q[Q. head]
PUSH(S, x) 2 if Q. head == Q. length
1 S. top = S. top+ l 3 Q.head = 1
4 else Q. head = Q. head+ 1
2 S[S. top] = x 5 return x

PoP(S)
1 if STACK-EMPTY(S)
2 error '�derflow"
3 else S. top = S. top - 1
4 return S[S. top+ l]

Qqepe.z.u
□pHMeHHTeJil,HO IC 011epe)VIM onepauH.R BCTaBKH H83blBaeTCJI ENQUEUE (noMe­
CTHTb B 011epeJJ.b), a onepaurui: y.naneHH.R - DEQUEUE (BblBeCTH H3 011epeJJ.H). □OJJ.06Ho
cTeKosou onepauHH POP, onepau.H.R DEQUEUE He -rpe6ye-r nepeJJ.a1m JJieMeHTa MaccH­
Ba B BH)].e apryMeHTa. BnaroJJ.ap.R CBOHCTBY FIFO O11epeJJ.h noJJ.o6Ha, HanpHMep, )l(HBOH
o'lepenit K epa'I)' B nOJIHMHHmce. Y Hee HMeIOTCJI zOJ1011a (head) H xsocm (tail). Koma
3JieMeHT llOMemaerc.11 8 O'lepe,11,1,, OH 3aHHMaeT MeCTO B ee XBOCTe, TO'IHO Tak )Ke,
KaK 'ICJIOBeK 3aHHMaeT O'lepe.zu, nocJiellHHM, 'ITOObJ nonacTb Ha npHeM K epa'I)'.
Jfa O'lepe­nH seer.a.a BLIBO.[I.HTCJI JJieMeHT, KOTOphlH HaxOnitTCJI 8 ee fOJIOBHOH
'laCTH aHaJIOnt'lHO TOMy, KaK s Ka6HaeT spaqa scema 3axo.a.HT 6om.Hon, KOTopLIH
X<,ll;aJI .a.om.we scex.
Ha pHc. I 0.2 nOKa3att O.U.HH H3 cnoco6os, KOTOphlM 003BOilJleT C noMOJ.UblO MaCCHBa
Q[l .. n] peaJIH30BaTb O'lepe.iu,, COCTO�yIO He 6onee 'leM H3 n - 1 3JieMeHTOB. 3Ta
oqepe,a.b o6na.a.aer arpu6yroM Q. head, KOTOphln JIBillleTCJI HIUleKCOM ronoBHoro JJie­
Meura IUIH yKaJaTeJieM Ha Hero; arpu6yr Q. tail H}U(eKcttpyer MeCTOOOJIO)KeHHe,
KY· .a.a 6y)leT .no6aBJUITbCJI HOBLIH 3JICMCHT. 3neMeHTbJ oqepe,nH pacnoJIO)l(eHbl B
Jl'leHKax Q. head, Q. head+ 1, ... , Q. tail - 1, KOTOp1>1e UHKJIH<i:ecKH JaMKHyr1>I B TOM
CMbIC· ne, 'ITO JllieHICa 1 cne.nyer cpaJy )Ke nocne Jl'ICHKH n B UHKJIH'leCKOM
nop,uuce. IlpH BhlnonHeHHH ycnoBHJI Q. head = Q. tail 011epe,n1, nycra. lhHa'laJibHO
s1,moJIHJ1eTCJ1 cooTHomeeue Q. head = Q. tail = 1. EcJIH oqepe,n1, nycra, TO npu
nollblTKe )')].aJIHTb H3 Hee JJieMeHT npoHCXO.a.HT omH6Ka onycromeHH.11. EcnH Q. head
= Q. tail+ I, HJIH Q. head = 1 H Q. tail = Q. length, TO 011epe,!1,b 3anonHeHa, H noabITKa
,!1,o6asHTb B Hee 3JICMCHT npHBO.[I.HT K ee nepenonHeHHIO.
B Hawux npoue.nypax ENQUEUE H DEQUEUE nposepKa own6oK onycroweHHJI
H nepenonHeHHJI He npOBOnJ{TCJI. (B ynp. I 0.1.4 npe)].JlaraeTCJI ,!1,06aBHTb B
npoue.nypbI coorsercreyiomuu K0,!1,.) B nces,noKo,!l,e npe.nnonaraerc.11, 'ITO n = Q.
length.
10.2. CeH3auui.1e cnucacu

CtUl30HHWii cnucoK (linked list) - 3TO crpyicrypa ,D,aHHbJX., e KOTopoii ofu.eI<TbI


pacnonmKCHl,I B JIHHCHHOM nopll.!l,Ke. O,D,HaKO, B OTJIHqne OT Maccuea, B KOTOpoM 3TOT
nop.11,D,OK onpe,!1,eJIJleTCX HH,D,eKC3MH, nopll.!l,OK B CBX3aHHOM CilHCKe onpe,!leJIJleTCX yica-
3aTCn.llMH Ha Ka)IC.!l,blff ofu.eKT. CBJ133HHbIC CilHCKH o6ecne'll!BalOT npocroe H rH6Koe
rrpe.ncraeneuue .llHHaMuqeCKHX MH0)l(eCTB H llO.!l,ll,ep)l(HBalOT BCe onepauHH (XOTll H He
ecer.11.a .11.ocraToquo 3qiq>eI<THBHO ), nepequcneHHbie Ha c. 261.
KaK noKa3aHo Ha puc. 10.3, Ka)IC.!l,b!H 3JICMeHT Ot11V1COW C6RJaHHozo cnucKa (doubly
linked list) L - 3TO ofu.eKT c 0.D.HHM aTPH6yroM key H .llB}'M.11 aTPH6yraMH-}"Ka.3aTe­
n.llMH: next (cneJzyJOll{HH) H prev (npe.!lbl.llYlllHH). 3ror ofu.eKT M0)l(eT TaK)l(e C0,!1,ep­
)((aTI, ,!1,pyme conyrCTB}'IOlllHC .IJ.3HHI,le. An,i 33.11.aHH0ro )JieMeHTa CilHCKa X }"Ka.33TCJJL
X. ne,xt YKa.31,IBaeT Ha CJIC,ll,}'IOillHH 3JICMCHT CBll33HHOro CDHCKa, a }"Ka.3aTenh X. prev -
Ha npe.llhmymHH. Ecnu x. prev = NIL, y 3neMeHTa x HeT npe.11wecreeHHH1Ca, u, cne­
.11.oearen1,Ho, OH JIBJllleTCJI nepsMM, T.e. ZOII06H6l.M B CnHCKe. Ecm1 X. next = NIL,
TO y 3JieMeHTa x HeT nocneeyiomero, a 3HaqnT, OH JIBJIJleTCll nocne,D,HHM, T.e. uo­
cmot1WM e cnucKe. ATPH6yr L. head yica31,1eaeT Ha nepsbIH 3JieMeHT cnucKa. Ecnu
L. head = NIL, TO cnuco1e nycT.
CnHCKH Moryr 6bITI, pa.3HhIX BH,llOB. CnHCOK MO:>KeT 6bITb O,llHOKpaTHO H.JIH ,llBIDK,ZU,I
CBJl3aIIHbIM, OTCOPTHPOBa.HHbIM HJIH HeOTCOPTHPOBaHHbIM, KOJlbl,leBbIM HJIH
HeKOJlbQe­BhIM. EcJrn CTIHCOK od1101<.pam110 C6.RJa1111wii (od11011anpa6J1e1111wii) (singly
linked), TO yica:JaTe rrh prev B ero 3JieMeHTaX OTCYTCTByeT. EcJIH cnHCOK
omcopmupo6aH ( sorted), ro ero JIHHeHHhIH rropj[,llOK coOTBeTCTBYeT JIHHeiiHoMy
nopg.z:ucy ero Kmoqeif; B 3TOM CJ1)'11ae MHHHMaJibHblH 3JieMeHT HaxO,n:HTCjf B roJIOBe
CTIHCKa, a MaKCHMaJibHhlH - B ero XBOCTe. EcJIH :>Ke CIIHCOK He OTCOPTHPOBaH, TO
ero 3JieMeHTbl MOryr pacrroJiaraTb­CJI e npOH3BOJibHOM nop,mKe. EcrrH crrHCOK
1<.oJ11u,eBoii (circular list), TO YKa.JaTem, prev ero roJIOBHOro 3JieMeHTa YKa.JbIBaeT Ha

ero XBOCT, a YKa.JaTeJib next XBOCTOBOro 3JieMeHTa - Ha roJIOBHOH 3JieMeHT. TaKOH

CTIHCOK MO:>KHO paccMaTPHBaTb KaK 3aMKH)'­ThIH B BH.lle KOJlbQa Ha6op 3JieMeHTOB . B


OCTaBrneif cg qaCTH pa.3,lleJia rrpe.nrroJiaraeTCjf, qro CilHCKH, c KOTOpbIMH HaM
rrpH,n:eTCjf pa6oTaTb, - HeOTCOpTHpOBaHHble ,n:Ba)l(,llbl CBJl3aHHbie.

IlOHCK B CBH33HHOM CDHCKe

8b130B LIST-SEARCH(£, k) Haxo,IJ.HT B cnHcKe L rrepBbIH 3JieMeHT c KmoqoM k


nyreM npocTOro JIHHeHHOro IIOHCKa H BO3BpamaeT YKa.JaTeJib Ha HaH,lleHHhlH
3Jie­MeHT. EcJIH 3JieMeHT C KJlloqoM k B CTIHCKe OTCYTCTByeT, BO3Bpamaercg

3HaqeHHe NIL. Tipoue.nypa LIST-SEARCH(£, 4), Bbl3BaHHag )lJUI CBjf3aHHOro


CIIHCKa, H306- p3.)f(eHHOro Ha pHc. 10.3, (a), BO3spamaer YKa.JaTeJih Ha TPeTHH
3JieMeHT, a BhI3OB LIST-SEARCH(£, 7) - 3HaqeHHe NIL.
LIST-SEARCH(£, k)
1 x = L.head
2 while x =I- NIL H x. key =I- k
3 x = x.next
4 return x

IloHCK C TIOMOIQblO npoue.nypbl LIST-SEARCH B CIIHCKe, COCTOjfIQeM H3 n 3JieMeHTOB,


B HaHXYJJ:IIIeM C�ae BblIIOJIHJleTCjf 3a BpeMg 8 ( n), TIOCKOJlbK)' MO:>KeT IIOHa,ll06HTbCjf
npOCMQTPeTb Bech CTIHCOK.

8CT8BK8 B CBH33HHLIH CDHCOK

EcrrH HMeercg 3JieMeHT x, aTPH6YT key KOToporo rrpe.n:sapHTeJihHO ycTaHOBJieH, TO


npoue.n:ypa LIST-INSERT BCTaBIDleT 3JieMeHT X B HaqaJio C IIHCKa (pHC. 10.3, (6)).

LIST-INSERT (L, x)
1 x. next = L.head
2 if L.head =/- NIL
3 L.head.prev = x
4 L.head = x
5 x.prev = NIL
(BcnOMHHTe, qTQ Harna 3aTIHCb aTJ)H6yroB ,n:onycKaer KaCKa,n:HpOBaHHe, TaK qTQ
L. head. prev O3Haqaer aTJ)H6yr prev om,eKTa, Ha KOTOpbIH }'Ka3hIBaer aTJ)H6yr
L. head.) BpeMH pa60TbI LIST-INSERT co cnHCKOM H3 n 3JieMeHTOB paBHO 0(1).

Y,zulJleuue Hl CBHl&HHOro CUHCKa

Ilpe,n:cTaBJieHHaJI HH:>Ke npoue.zzypa LIST-DELETE y;ri:a.mier 3JieMeHT x H3 csuaH­


HOro CTIHCKa L. B npoue.zzypy Heo6xo,n:HMO nepe,n:aTb yi<a3aTeJib Ha 3JieMeHT x, TIOCJie
qero OHa y;ri:a.mier X H3 CTIHCKa nyreM o6HOBJieHIDI yi<a3aTeJieH. qT06bI y,r:,;aJIHTb 3Jie­
MeHT C 3a,n:aHHbIM KJIIOqOM, Heo6xo,n:HMO CHaqaJia Bbl3BaTb npoue.zzypy LIST-SEARCH
.llIDI no.rryqeHHjf yi<a3aTeIDI Ha 3JieMeHT.

LIST-DELETE (L, x)
1 if x. prev =/- NIL
2 x.prev. next = x. next
3 else L. head = x. next
4 if X. next =/- NIL
5 x. next.prev = x.prev
Ozpa11u11umenb(sentinel) - 3TO q>HKTHBHhIH 061,eKT, ynpomaromHu: }"Ier rpaHHqHbIX ycJIOBHH.
HanpHMep, npe,n:noJIO:>KHM, qrn B crrHCKe L rrpe.n:ycMOTJ)eH om,eKT L. nil, rrpe,n:CTaBIDIIOillHH
3HaqeHHe
NIL, HO rrpH 3TOM co,n:ep:>KalllHH Bee aTJ)H6yrbl, KOTOpbie HMelOTCjf y .n:pyrHX 3JieMeHTOB. Kor.n:a B KO,n:e
npOHCXOJJ:HT o6pameHHe K 3HaqeHHIO NIL, OHO 3aMeIDiercg o6pameHHeM K orpaHHqHTeJIIO L. nil. KaK
TIOKa3aHO Ha pHC. 10.4, Ha­JIHqHe orpaHHqHTeIDI npeo6pa3yer 06bJqHblH ,n:Ba:>K,n:bl CBjf3aHHblH CilHCOK B
U,UIUIU'le­CKUU d6a:»edbl c6.RJaHHWii cnucoK c ozpa11u11umeneM. B TaKOM cnHcKe orpaHHqHTeJih L. nil
pacnoJio:>KeH Me:>KJJ:Y roJIOBOH H XBOCTOM. ATJ)H6yr L. nil. next yi<a3bIBaer Ha roJiosy cnHcKa, a
aTJ)H6yr L. nil. prev - Ha em XBOCT. AHaJiornqHo aTJ)H6yrhl next XBOCTosoro 3JieMeHTa H prev
roJIOBHOro 3JieMeHTa yi<a3bIBaIDT Ha 3JieMeHT L. nil. Ilo­CKOJibKY aTJ)H6yr L. nil. next }'Ka3bIBaer Ha
roJiosy cnHcKa, MO:>KHO ynpa3,n:HHTb aT­pH6yr L. head, 3aMeHHB CCbIJIKH Ha Hero CCbIJIKaMH Ha L. nil.
next. KaK BHJJ:HO Ha pHC. 10.4, (a), nyCTOH CTIHCOK co,n:ep:>KHT TOJlbKO orpaHHqHTeJib, H KaK L. nil. next,
TaK H L. nil. prev }'Ka3hIBaIDT Ha L. nil.
(a) L.nil�

(6) L.nil� l9l °"A-l16I °"A-l4l ""A--l t l I l:J


(a) L.nil� 125! --n 19l � lt6l--n 141 �II II l:J
(r) L.nil� 1251 � l9I� lt6I � l4II l:J
P■c. 10.4. QHIUUt'ICCKHH JlBallC.lll,I C8'13aHIIJ,IH CllllCOI( c orpattH'll!TeJIDOI. OrpaHJA.HTeJlb L. nil uaxo­
JI.KTCll MCllUzy ronoaoii H XBOCTOM. Arpu6yr L. head 6oJJ.bWe ue H)'ll(CH, nocl(l)JIJ,I()' J10C1)'II k ronoec
CIUICl(ll nOJl}"laeTC.11 c noMOIJ.tblO L. nil. next. (a) nycroii CIIHCOk. (6) C.Bll3aHHWH CllHCOIC c pHC. 10.3, (a),
c =OM 9 B ronoee u ICJIIO'IOM 1 a XBOCTe CllllCJCa. (B) Cnucotc nocne swnOJJHetlHll LIST-INSERT(L, x),
rJ1e x. key = 25. Hoewii o6be1cr CTllllOBJrrc.11 ronoaoii cnuck.a. (..-) CnucOJ( nOCJie YJlallCHHJI o6be1cra
c ICJDO'IOM 1. HoablM XBOCTOM CTBHOBHTC• 00!,CKT c ICJIMl'iOM 4.

Ko.n LIST-SEARCH ocraerc,r npe>KHHM, HO 06p�eHHJ1 IC NIL H L. head H3MCHCHLI,


KaK yxa:33HO BblWC.

LIST-SEARCH' ( L, k)

l x = £.nil.next
2 while x -1- L. nil H x.key -1- k
3 x = x.next
4 return x

Y.11.aneHHC JJieMeHTa H3 cnHCICa np0H3B0,IJ,HTCJI C nOMOIIU>IO )')ICC ODHC8HHOH .zuiycrpoq­


HOH npoueizyp1,1 LIST-DELETE' . .nn,t BCTaBKH 3neMeHTa B cnHcoJC ncnom.3YeTCJ1 npn­
BC,11.eHHaJ1 HIDKe npoueizypa.

LIST-INSERT (L, x)

I x. next = L. nil. next


2 L. nil. next. prev = x
3 L.nil.next = x
4 x. prev = L. nil

}leHCTBHC npoue.izyp LIST-INSERT' H LIST-DELETE' H8 CnHCOK-OOpa3CU noICa3aHO H8


pHc.10.4.
IlpHMCHCHHC Orp8Hl-l'IHTeneH pe)ll(O npHBO,lJ,HT K YJIY'llllCHHIO 8CHMIITOTH'ICCKOro
BpeMCHH o6pa6on<H crpyicryp .llaHHLIX, O,llH8KO MO)l(eT YMCHbllIHTL BCJJH'IHHY nocro­
JIHHhIX MHOllCHTCilCH. lin.aro,llap,r HCnOJil.30BaHHIO orpaHHlfHTCJlCH B UHKJJ8X o6hl'IHO
ne CTOJJLKO )'BCJIH'IHBaeTCJI CKOpocn, pa60Tbl KO.Ila, CKOJILKO nOBhlDJaeTCJI ero JICHOCTI>.
HanpHMep, npe.llCTaBnCHttbfii: Bblllle KO.ll, npe,llH83Ha'leHHblH ,llJlJI o6paOOTKH CBJl38H­
ttoro CDHCIC8, ynpowaerc,r B pe1yn1,nrre npHMCHCHIDI orpaHH'IHTeneif, HO C31COHOM­
JlCHHoe B npoueizypax LIST-INSERT' H LIST-DELETE' BpeMJI COCTaBJIJleT BCero IlHWh
MHHHMYM H M&KCHMYM

3neMeHT C MHHHMMbHLIM 3Ha"leHHeM KJIIO"la scer.rta MOJl(HO HaHTH, cne,tzy.A no .ao­


'lepHHM yt<MaTeJIJIM left OT KOpKenoro y3na .ao Tex nop, noKa He nc1'peTHTCil 3Ha'leHue
NIL, KaK ITOKa33HO Ha pHC. 12.2. CTpm1e,D,eHHa.A HHJl(e npoueizypa B03BpamaeT YKa3a­
Teilb aa MHHHMMbHblH 3neMeHT ITOMepeBa C KOpHeM B ,D,aHHOM y3Jle x, KOTOpLIH
npeAnonaraeTc.A He pasHLIM NIL.

TREE-MINIMUM(x)
I while x. left f NIL
2 x = x.left
3 return x

CBOHCTBO 6HHapHoro ,D,epesa nOHCKa rapaHTHPYeT KOppeKTHOCTb npoueizypbl TREE­


MINIMUM. ECJJH y yJna X HeT nesoro ITOMepesa, TO, ITOCKOnbK)' BCe KJIJO"IH B npaBOM
ITOMepeBe X He MeHbwe KJIIO"la x. key, MHHHMMbHblH KJIIO"I ITOMepeaa C KOpHeM
B y3Jle x Haxo.rtHTC.A B yJne x. key. EcnH Jl(e y y3Jla x eCTb nesoe noMepeso, TO,
ITOCKOnbK)' B npaBOM ITOMepeBe He MOJl(eT 61,1Tb y3na c KJIIO"IOM, MeHbWHM x. key,
a see KJJJO"IH B yJnax nesoro no.u..aepesa He npesblwa10T x. key, yJen c MHHHManbHblM
3Ha"leHHeM KJIIO"la B ITOMepeae C KOpHeM X HaxO,D,HTC.A B noMepeBe, KOpHeM KOTOporo
.ABn.AeTC.A yJen x. left.
nce&,D,OKO,D, npoueizypbl TREE-MAXIMUM CHMMeTpH"leH.

TREE-MAXIMUM(x)
I while x. right f NIL
2 x = x.right
3 return x

06e 3TH npoueizyp1,1 HaxO.a,tT Mll!HHMMbHblH (MaKCHMMbHLIH) 3neMeHT .uepeaa 3a Bpe­


M.A O(h), me h - BblCOTa .rtepesa, nocKOnbK)', KaK H B npoueizype TREE-SEARCH,
nocne,D,O&aTenbHOCTb npoaep.AeMl,IX Y3JIOB o6pa3yeT npocTOli HHCXO.a,tWHH nyn, OT
KOpH.A Aepeaa.
12.3. BcraeKa H YJlaneuHe

Onepauuu BCTaBKH H y.naJieHHJI npHB0.lVIT K BHeceHHIO H3MeHeHHH B J(HHaMH'leCK0e


MHOlKeCTBO, npe,ncTaBJieHH0e 6,rnapHblM ,nepeB0M noHCKa. Crp)'KTYJ)a ,naHJUdX .noIDK­
Ha 6b1Tb H3MeHeHa TaKHM o6pa30M, 'IT06bl 0Tp3)1(3Tb )TH H3MeHeHHJI, HO npu 3TOM
COXpaHHTb CBOHCTBO 6uHapHb1X .nepeBbeB noHCKa. KaK Mhl )'BH,nHM B )TOM pa3,nerre,
BCTaBKa HOBOl'O 3JieMeHTa B 6uHapHoe ,nepeB0 noucKa BbID0JIIDleTCll 0TH0CHTeJibH0
npocro, 0.ttHaKO C y_naJieHHeM npu,neTCll Il0B03HTbCll.

BCTIBKI

,Aiu! BCTaBKH H0B0ro 3Ha'leHHJI V B 6uHapttoe .nepeso noHCKa T Mbl B0Cnom,3yeMCJI


npoue.ttYP0H TREE-INSERT. ITpoue.ttYPa nonyqaeT B Ka'leCTBe napaMeTpa Y3eJ1 z, 3TpH-
6yn,i KOToporo z.key = v, z.left = NIL u z.right = NIL. ITpoue,eypa TaKHM o6pa30M
HJMeHlleT T H HeKOT0pble D0Jlll z, 'ITO Z 0Ka3b1B3eTCll BCTaBJieHHbIM B KOppeKTHyio
ITOJHUHIO .ttepesa.

TREE-INSERT(T, z) TREE-DELETE(T, z)
1 y = NIL I if z. left == NIL
2 x = T.root 2 TRANSPLANT(T, z, z. right)
3 while x -/- NIL
3 elseif z. right == NIL
4 y=X
4 TRANSPLANT(T, z, z. left)
5 if z.key < x.key
6 x = x.left 5 else y = TREE-MINJMUM(z.right)
7 else x = x.right 6 ify.p#z
8 z.p = y 7 TRANSPLANT(T, y, y. right)
9 if y == NIL 8 y. right = z. right
10 T.root = z 9 y.right.p =y
11 elseif z.key < y. key 10 TRANSPLANT(T, z, y)
12 y.left=z
else y. right = z
II y. left = z. left
13
12 y.left.p =y
D1aea 13. Kpacuo-11epuL1e .l(epeBLH
B rnaee 12 61,mo IIOKa.JaHo, 'ITO 6HHapHhle .nepeBMl noHCKa BhlCOThl h pearru3y­
lOT ece 6a.JOBhie onepaU:HH Ha,IJ; ,IJ;HHaMH'leCKHMH MHO)l(eCTBaMH, TaKHe KaK SEARCH,
PREDECESSOR, SUCCESSOR, M INIMUM, MAXIMUM, INSERT H DELETE, co epeMe­
HeM pa60Thl 0( h). TaKHM o6pa30M, onepaU:HH BhinOJIH.IIIOTC.11 TeM 6b1cTpee, 'leM MeHh­
we BblCOTa .nepeea. 0}:lHaKO B HaHX�llleM cnyqae npOH380,IJ;HTeJihHOCTh 6HHapHOI'O
,ll.epeea IIOHCKa 0Ka3hIBaeTC.II HH'l)'Th He nyqmeif, 'leM npOH3B0)lHTeJihHOCTh CB.113aHHO­
ro CIIHCKa. KpacHO-'lepHbie )lepee1,.11 npe.ncTaBJllllOT co6oii OJlHY H3 MHO)l(eCTBa "c6a­
rraHCHpOBaHHhlX" cxeM )lepeBbeB nOHCKa, KOTOpble rapaHTHpyror epeM.11 BbinOJIHeHHll
orrepaUHH Ha,IJ; ,IJ;HHaMH'leCKHM MHO)l(eCTBOM O(lg n) .na)l(e B HaHxy.nmeM cnyqae.

13.1. CBOHCTBa Kp8CH0-'1epHb1X .aepeBbeB

Kpacno-qepnoe Oepe•o npe)lCTaBJI.lleT C060H 6HHapHOe )lepeBO nOHCKa C O,IJ;HHM


,ll.OnOJJHHTeJibHbIM 6HTOM 14•ema B Ka)l(JlOM yJne. UseT yJna MO>KeT 6MTb nH6o Kpac­
lf!.IM (RED), JIH60 'lepH!.IM (BLACK). B COOTBeTCTBHH C HaJCJia,IJ;l,IBaeMhIMH Ha y3n1,1
,ll.epeea orpaHH'leHHllMH HH O,!J;HH npOCTOH nyr1, OT K0PHll B KpaCHO-'lepHOM JJ:epeee
He OTJJH'laeTc.11 OT .npyroro no JVJHHe 6onee 'leM e .nea pa3a, TaK 'ITO KpaCHO-'lepH1>1e
,ll.epeBbll .IIBJUIIOTCll rrpH6nH>KeHHO c6a.nancupo•aHHWMU.
Ka>K,nE,1H y3en .l{epesa CO.l{ep>KHT aTpH6yr1,1 color, key, left, right H p. EcnH He
cymeCTBYeT llO'lepHero HJJH po.nHTCJJl,CKOro Y3Jia no OTHOllleHHIO K llaHHOMy, COOTBeT­
CTBYfOill.HH yi<aJaTCJJI, npHHHMaeT 3Ha'leHHe NIL. M1,1 6yJJ:eM paccMaTpHBaTh 3TH 3Ha­
'ICHWI NIL KaK }'KaJaTenH Ha BHelllHHe y3n1,1 (nHCTbll) 6HHapHoro .nepeea noHCKa. TipH
3TOM see "HopMaJihHhie" YJnhl, conep>KaIIIHe none KJIIO'la, CTaHOB.IITCll BHYTPeHHHMH
Y3JJaMH nepeea.
6HHapHOe .nepeeo nOHcKa .IIBJUleTC.11 KpaCHO-'lepHhIM nepeBOM, ecJIH OHO }'ii.OBJJe­
TBOplleT cne.nyIOlIIHM Kpacno-qepnMM c•oiicmt1aM.

1. Ka)l(JlbIH y3en llBJUleTCll nu6o KpaCHblM, JIH60 11epHblM.

2. KopeHb .nepeea llWUieTC.11 'ICpHbIM y3JI0M.

3. Ka)l(JlblH nucr .nepeea (NIL) .11BJIJ1eTc.11 qepHblM Y3JI0M.

4. EcnH Y3en KpaCHhIH, TO o6a ero .no11epHHX Y3J1a 'lepHblC.


5. )1.mi: K3.)KJIOro YJna ece npoCTblC nyrn or Hero .!10 JIHCThCB, .IIBJUIJOil.{HXCll llOTOMJ(:lMH
JJ:aHHOro y3na, co.nep)KaT O,nH0 H TO >KC KOJIH'ICCTBO 'iCpHl,lX }'3Jl0B.
RB-lNSERT(T, z)
1 y = T.nil
2 x = T.root
3 while x i= T. nil
4 y - X
5 if z. key < x. key
6 x x. left
7 else x = x. right
8 z.p = y
9 if y == T.nil
10 T.root = z
11 elseif z. key < y. key
12 y. left = z
13 else y. right = z
14 z. left = T. nil
15 z. right = T. nil
16 z. color = RED
17 RB-INSERT-FIXUP (T, z)

RB-INSERT-FIXUP (T, z)
l while z.p. color == RED
2 ifz.p==z.p.p.left
3 y = z.p.p.right
4 if y. color == RED
5 z.p.color = BLACK // CJJ)"laH I
6 y. color = BLACK // CJJ)"lan I
7 z.p.p. color = RED II CJJ)"laii I
8 z = z.p.p II Cn)"laii I
9 else if z == z.p. right
IO z = z.p II Cn)"lan 2
11 LEFT-ROTATE (T, z) II CJJ)"laH 2
12 z.p.color = BLACK II CJJ)"laH 3
13 z.p.p. color = RED II Cn)"latt 3
14 RIGHT-ROTATE(T,z.p.p) II CJI}"lau 3
15 else (TO )Ke, 'ITO H B 'laCTH then, HO c JaMeHoH
"npasoro" (right) "nesblM" (left) H Hao6opoT)
16 T. root. color = BLACK

You might also like