Diferente pentru treapuri intre reviziile #33 si #34

Nu exista diferente intre titluri.

Diferente intre continut:

Se observă că algoritmul poate fi scris şi iterativ, lucru ce este recomandat.
h3. Rotaţii
 
Să urmărim (în desen) efectul rotaţiilor asupra structurii de heap a arborelui. Pentru început, să presupunem că arborele din figura din stânga are o structură de heap cu excepţia lui $w$ care are o prioritate mai mare decât a lui $z$. Dacă îl rotim pe $w$ spre dreapta (figură rotaţie stânga - dreapta) vedem, în figura din dreapta, că structura de heap este satisfăcută. Din moment ce &A& era un subarbore valid al lui $w$, va rămâne în continuare un subarbore valid. Cum $B$ şi $C$ se aflau iniţial sub $z$ ei aveau o prioritate mai mică decât a lui $z$, şi, astfel, după rotaţie ei sunt subarbori valizi pentru $z$. Este clar că $z$ este un fiu valid al lui $w$, prin presupunerea făcută iniţial.
 
Pe de altă parte, să presupun că arborele are o structură de heap, cu excepţia lui $z$ care are o prioritate mai mică decât a ambilor fii şi să presupunem că $w$ este fiul cu prioritatea mai mare.
 
h3. Inserare
În cadrul operaţiei de inserare vom atribui unui nod nou o prioritate şi îl vom insera, conform algoritmului standard de inserare într-un arbore binar, la baza arborelui. Cheile formează un arbore de căutare, dar priorităţile pot să nu mai formeze un heap. Pentru a redobândi această proprietate, cât timp nodul $z$ are prioritate mai mare decât părintele său, se execută o $rotaţie$ în $z$, o operaţie locală care scade nivelul lui $z$ cu $1$ şi creşte nivelul părintelui lui $z$ cu $1$, timp în care invariantul arborilor de căutare este menţinut. Timpul de inserare a lui $z$ este proporţional cu adâncimea lui înainte de rotaţii - trebuie să coborâm după care să urcăm înapoi efectuând rotaţiile necesare.
h3. Ştergere
Operaţia de ştergere, după eliminarea unui nod, va reconstrui arborele astfel încât cei doi invarianţi să fie menţinuţi.
Operaţia de ştergere este inversul operaţiei de inserare. (Se va desena o figură) Să presupunem că vrem să ştergem nodul $z$. Cât timp $z$ nu este o frunză, alegem fiul $w$ cu prioritatea mai mare şi facem o rotaţie pentru a aduce pe $w$ în locul lui $z$. Dacă alegem fiul stâng vom face o rotaţie spre dreapta şi, analog, dacă alegem fiul drept vom face o rotaţie spre stânga. (desen) Când $z$ devine frunză îl ştergem din arbore. Dacă nu îl luăm în considerare pe $z$, în urma rotaţiilor cei doi invarianţi se menţin. (explicat la rotaţii)
 
De adăugat: insert, remove, split, join, lookup, rotleft, rotright, print, balance, meld {$O(mlog(n/m))$} - unirea a două treapuri T1 şi T2 fără nicio relaţie de ordine între ele, difference $O(mlog(n/m))$ - din T1 şi T2 rezultă un T care conţine cheile din T1 care nu sunt în T2, interpretarea geometrică, explicarea rotaţiilor (cum şi de ce se menţin invarianţii).
_De adăugat: insert, remove, split, join, lookup, rotleft, rotright, print, balance, meld {$O(mlog(n/m))$} - unirea a două treapuri T1 şi T2 fără nicio relaţie de ordine între ele, difference $O(mlog(n/m))$ - din T1 şi T2 rezultă un T care conţine cheile din T1 care nu sunt în T2, interpretarea geometrică, explicarea rotaţiilor (cum şi de ce se menţin invarianţii)._
h2. Coding

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.