Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:laboratoare:lab-09 [2024/04/28 18:06]
alin.ichim [Exerciții]
sd-ca:laboratoare:lab-09 [2025/05/06 11:20] (current)
alexandra.lache0802 [Ștergerea]
Line 1: Line 1:
-====== Laborator ​- ABC și Heap ======+====== Laborator ​- ABC și Heap ======
  
 Responsabili Responsabili
-  * [[alinichim49@gmail.com|Alin Ichim]] +  * [[alexandralache0802@yahoo.com|Alexandra Lache]] 
-  * [[melih.riza@yahoo.com|Riza Melih]] +  * [[traian24022005@gmail.com|Traian Dobrescu]]
- +
 ===== Obiective ===== ===== Obiective =====
  
Line 68: Line 66:
  
 <note tip> <note tip>
-În cazul ștergerii ​unui nod frunză sau a unui nod având ​un singur ​succesorlegătura de la rintele ​nodului ​de șters este înlocuită prin legătura nodului ​de șters ​la succesorul ​u (**NULL** în cazul frunzelor).+  * Ștergerea ​unui nod frunză sau a unui nod cu un singur ​copil dintr-un arbore binar de căutare este o operație simplă. Pe lângă eliminarea efectivă a noduluieste necesară și actualizarea referinței din nodul rinte, astfel încât aceasta să pointeze către copilul ​nodului șters ​(dacă există) sau către NULL, în cazul în care nodul șters era o frunză. 
 + 
 +  * Eliminarea unui nod cu doi succesori ​este mai complexă, deoarece trebuie menținută proprietatea specifică arborilor binari de căutare (BST). În acest caz, nodul de șters ​este înlocuit cu un nod care are o valoare apropiată, astfel încât structura și regulile arborelui ​să rămână corecte. O soluție frecvent utilizată este **înlocuirea cu nodul care are cea mai mică valoare din subarborele drept** (adică nodul cel mai din stânga din acel subarbore). Acest nod este garantat a fi //mai mare decât toate valorile din subarborele stâng// și //mai mic decât celelalte valori din subarborele drept//, păstrând astfel ordinea specifică unui arbore binar de căutare.
  
-Eliminarea unui nod cu doi succesori se face prin înlocuirea sa cu nodul care are cea mai apropiată valoare de nodul șters. Acesta poate fi din extremitatea dreaptă a subarborelui stâng (**predecesorul**;​ se caută cel mai mare nod din acest subarbore, adică "se merge" în dreapta până se ajunge la un nod cu cel mult un succesor, aflat evident în partea stângă, altfel am putea avansa în adâncime pe dreapta) sau nodul din extremitatea stânga a subarborelui drept (**succesorul**;​ se caută cel mai mic nod din acest subarbore, adică "se merge" în stânga până se ajunge la un nod cu cel mult un succesor, aflat evident în partea dreaptă, altfel am putea avansa în adâncime pe stânga). 
 </​note>​ </​note>​
  
Line 208: Line 207:
  
 <​note>​ <​note>​
-Un arbore este **echilibrat** dacă fiecare ​subarbore este echilibrat și înălțimea oricăror doi subarbori diferă cu cel mult 1.+Un arbore este **echilibrat** dacă pentru ​fiecare ​nod din arbore diferența în valoare absolută dintre ​înălțimile subarborilor acestuia este cel mult 1.
 </​note>​ </​note>​
  
 {{ :​sd-ca:​laboratoare:​balancedtree-example.png?​600 |}} {{ :​sd-ca:​laboratoare:​balancedtree-example.png?​600 |}}
  
-===== Schelet ===== 
- 
-{{:​sd-ca:​laboratoare:​lab09_2023_1.zip|Schelet de laborator}} 
  
 ===== Exerciții ===== ===== Exerciții =====
  
 <​note>​ <​note>​
-Trebuie să vă creați cont de [[https://lambdachecker.io Lambda Checker]], dacă nu v-ați creat deja, pe care îl veți folosi la SD pe toată durata semestrului. ​Aveti grija sa selectati contestul corect la submit, si anume **[[https://​beta.lambdachecker.io/​contest/​36|Laborator 9 SD]]**+Trebuie să vă creați cont de [[https://code.devmind.ro ​Devmind]], dacă nu v-ați creat deja, pe care îl veți folosi la SD pe toată durata semestrului.
 </​note>​ </​note>​
  
  
-1) [**3.5p**] ​ABC+1) [**3.5p**] ​BST
  
-Task1 va testa operațiile de insert, remove și afișarea (în ordine) a elementelor introduse în ABC.+Task1 va testa operațiile de insert, remove și afișarea (în ordine) a elementelor introduse în BST.
  
 2) [**3.5p**] Heap 2) [**3.5p**] Heap
Line 247: Line 243:
 Se dă un arbore binar de căutare cu valori de tip întreg. Să se întoarcă a k-a cea mai mică valoare din arbore. Se dă un arbore binar de căutare cu valori de tip întreg. Să se întoarcă a k-a cea mai mică valoare din arbore.
  
-4) [**BONUS 1p**] BST Two-Sum 
- 
-Se dă un arbore binar de căutare cu valori de tip întreg. Să se verifice daca există doua noduri ale căror valori însumate dau valoarea căutată. Daca există se va intoarce 1, iar în caz contrar se va întoarce 0. 
- 
-5) [**BONUS 2p**] Heap K-Largest 
- 
-Sa se gaseasca al K-lea cel mai mare numar dintr-o lista, utilizand un heap binar. 
  
 ===== Bibliografie ===== ===== Bibliografie =====
sd-ca/laboratoare/lab-09.1714316802.txt.gz · Last modified: 2024/04/28 18:06 by alin.ichim
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0