Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
Ambele părți revizuirea anterioară Versiuni anterioare Urmatoarea versiune | Versiuni anterioare Urmatoarea versiune Ambele părți următoarea reviziune | ||
laboratoare:laborator-04 [2017/03/08 13:07] mihai.iacov [2 Arbori binari] |
laboratoare:laborator-04 [2017/03/12 21:58] mihai.iacov [5 Exerciții] |
||
---|---|---|---|
Linia 16: | Linia 16: | ||
===Rădăcină(Root)=== | ===Rădăcină(Root)=== | ||
- | + | Numim rădăcină primul nod al arborelui(echivalentul capului de listă). | |
- | ===Frunză(Leaf)=== | + | |
===Copil - Părinte(Child - Parent)=== | ===Copil - Părinte(Child - Parent)=== | ||
+ | Nodul P este părintele nodului C dacă are legătură către C(similar, C este copilul lui P). | ||
+ | * Pot apărea şi alţi termeni pentru relaţia dintre noduri: fraţi(siblings), | ||
- | ===Nivel(Level)=== | + | <note tip> |
+ | |||
+ | ===Gradul(Degree)=== | ||
+ | Gradul unui nod este egal cu numărul de copii ai acestuia. | ||
+ | |||
+ | ===Frunză(Leaf) şi nod intern/ | ||
+ | Numim frunză un nod fără copii(**nod terminal**). | ||
+ | * Frunzele se mai numesc **noduri externe**. | ||
+ | * Nodurile care au copii se mai numesc **noduri interne**. | ||
+ | |||
+ | ===Urmaş(Descendant)=== | ||
+ | Nodul U este urmaşul nodului S dacă putem " | ||
+ | |||
+ | ===Strămoş(Ancestor)=== | ||
+ | Nodul S este strămoşul nodului U dacă U este urmaşul lui S(putem " | ||
+ | <note tip> | ||
===Înălţime(Height)=== | ===Înălţime(Height)=== | ||
+ | Definim înălţimea unui nod egală cu numărul de legături pe care " | ||
+ | <note tip> | ||
===Adâncime(Depth)=== | ===Adâncime(Depth)=== | ||
+ | Definim adâncimea unui nod egală cu cu numărul de legături pe care " | ||
+ | <note tip> | ||
+ | |||
+ | ===Nivel(Level)=== | ||
+ | Definim nivelul unui nod egal cu 1 + adâncimea. | ||
===Pădure(Forest)=== | ===Pădure(Forest)=== | ||
+ | Numim pădure o mulţime de N(de obicei N >= 2) arbori disjuncţi(care nu au noduri comune). | ||
===Vector de taţi(Parent array/ | ===Vector de taţi(Parent array/ | ||
Linia 50: | Linia 74: | ||
{{ : | {{ : | ||
# poza arbore#}} | # poza arbore#}} | ||
+ | |||
+ | ====Alte noţiuni introductive==== | ||
+ | ===Arbore binar plin=== | ||
+ | Un arbore binar este plin dacă nu există niciun nod intern la care mai putem lega un nod-copil nou(Toate nodurile, în afară de frunze, au număr maxim de copii). | ||
+ | |||
+ | ===Arbore binar complet=== | ||
+ | Un arbore binar este complet dacă fiecare nivel(**cu posibila excepţie a ultimului**) este complet ocupat. | ||
+ | |||
+ | ===Arbore binar perfect=== | ||
+ | Un arbore binar este perfect dacă este complet ocupat pe fiecare nivel(fără excepţii). | ||
+ | |||
+ | <note important> | ||
+ | |||
====2.2 Reprezentare==== | ====2.2 Reprezentare==== | ||
Linia 201: | Linia 238: | ||
=====5 Exerciții==== | =====5 Exerciții==== | ||
- | - Să se realizeze stocul unei farmacii, | + | - Se dă un vector cu n întregi. Scrieţi o funcţie care să creeze un arbore binar de căutare cu valorile din vector. |
- | Evidența medicamentelor se ține cu un program care are drept structură de date un arbore de căutare după nume medicament. | + | - Se dă un arbore binar ce stochează întregi. Scrieţi o funcţie care verifică dacă arborele este binar de căutare. |
+ | - Se dă un arbore binar de căutare ce stochează | ||
+ | - Acelaşi arbore – inserare(şi să rămână arbore de căutare) | ||
+ | - Acelaşi arbore – ştergere(şi să rămână arbore de căutare) | ||
+ | |||
+ | ===Problemă întreagă=== | ||
+ | * Să se realizeze stocul unei farmacii, | ||
+ | |||
+ | Evidența medicamentelor se ține cu un program care are drept structură de date un arbore de căutare după nume medicament. | ||
Să se scrie programul care execută următoarele operații: | Să se scrie programul care execută următoarele operații: | ||
*Creează arborele de căutare | *Creează arborele de căutare |