Unelte utilizator

Unelte site


laboratoare:laborator-04

Diferențe

Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.

Link către această vizualizare comparativă

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/10 02:02]
mihai.iacov [Noţiuni introductive]
laboratoare:laborator-04 [2017/03/18 22:54]
mihai.iacov [2.3 Parcurgere]
Linia 19: Linia 19:
  
 ===Copil - Părinte(Child - Parent)=== ===Copil - Părinte(Child - Parent)===
-Nodul P este părintele nodului C dacă are legătură către C.+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), veri(cousins) etc. 
 <note tip>Rădăcina NU poate fi nod-copil.</note> <note tip>Rădăcina NU poate fi nod-copil.</note>
  
-===Frunză(Leaf)=== +===Gradul(Degree)=== 
-Numim frunză un nod fără copii(**nod terminal**).+Gradul unui nod este egal cu numărul de copii ai acestuia. 
 + 
 +===Frunză(Leaf) şi nod intern/extern(internal/external)=== 
 +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)=== ===Urmaş(Descendant)===
Linia 67: Linia 74:
 {{ :laboratoare:arborebinar.png?400 | {{ :laboratoare:arborebinar.png?400 |
 # 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>Puteţi întâlni **variante diferite** pentru ultimele trei definiţii şi, de aceea, pot apărea confuzii legate de semnificaţia termenilor **plin, complet şi perfect**. În cazul în care aveţi de lucrat cu arbori binari plini/compleţi/perfecţi, asiguraţi-vă că toată lumea se referă la aceleaşi noţiuni.</note>
 +
  
 ====2.2 Reprezentare==== ====2.2 Reprezentare====
Linia 87: Linia 107:
 void search_tree_preordine (tree *root) { void search_tree_preordine (tree *root) {
      if( root!=NULL){      if( root!=NULL){
-          count << root->data <<"\n";+          cout << root->data <<"\n";
           search_tree_preordine(root->left);           search_tree_preordine(root->left);
           search_tree_preordine(root->right);           search_tree_preordine(root->right);
Linia 217: Linia 237:
  
  
-=====5 Exerciții==== +=====5.1. Exerciții - schelet de laborator==== 
-  - Să se realizeze stocul unei farmacii,știind că informațiile pentru medicamentele unei farmacii sunt:nume medicament,preț,cantitate,data primirii,data expirării. +Pentru acest laborator puteți descărca scheletul de cod de [[http://elf.cs.pub.ro/sda-ab/wiki/_media/laboratoare/lab4_arbori-skel.zip|aici]]. Descărcați arhiva și dezarhivați-o.  
-    Evidența medicamentelor se ține cu un program care are drept structură de date un arbore de căutare după nume medicament.+ 
 +===4.2.1 Linux=== 
 +Puteti folosi utilitarul ''%%wget%%'' pentru descarcare si utilitarul ''%%unzip%%'' pentru dezarhivare. 
 + 
 +  * ''%%wget http://elf.cs.pub.ro/sda-ab/wiki/_media/laboratoare/lab4_arbori-skel.zip%%'' 
 +  * ''%%unzip lab4_arbori-skel.zip%%'' 
 + 
 +Pentru compilare folositi comanda ''%%make%%''. Pentru rulare puteti folosi comanda ''%%make run%%'' sau ''%%./tree%%''
 +=====5.2. Exerciții==== 
 +  - 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. 
 +  - 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ă  întregi. Scrieţi o funcţie care verifică dacă o valoare dată se află în arbore(căutare). 
 +  - 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) 
 + 
 +Puteţi testa primele 5 exerciţii în acelaşi program. 
 + 
 +===Problemă întreagă=== 
 +  * Să se realizeze stocul unei farmacii,știind că informațiile pentru medicamentele unei farmacii sunt:nume medicament,preț,cantitate,data primirii,data expirării. 
 + 
 +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
Linia 225: Linia 265:
 *Tipăreste medicamentele în ordine lexicografică *Tipăreste medicamentele în ordine lexicografică
 *Elimină un nod identificat prin nume medicament *Elimină un nod identificat prin nume medicament
-*Creează un arbore de căutare cu medicamentele care au data de expirare mai meche decât o dată specificată de la terminal +*Creează un arbore de căutare cu medicamentele care au data de expirare mai "mică" decât o dată specificată de la terminal 
-*Determinați greutatea arborelui și verificați dacă este binar complet sau nu+*Determinați greutatea(fie greutatea = numărul de frunze) arborelui și verificați dacă este binar complet sau nu 
 + 
 +===Probleme de interviu=== 
 +  * Se dă V(un vector de n întregi) şi  P(un vector de taţi de lungime n). Verificaţi dacă se poate construi un arbore binar de căutare cu valorile din V şi legăturile copil-părinte din P. 
 +  * Fie un arbore binar perfect cu înălţimea H. Creaţi (H + 1) vectori/liste, câte unul/una pentru fiecare nivel din arbore. Afişaţi fiecare nivel(parcurgerea în lăţime) cu ajutorul vectorilor/listelor. 
 +  * Găsiţi cel mai apropiat strămoş comun pentru două noduri dintr-un arbore binar. 
 +  * Se dau doi arbori binari cu întregi, A1 şi A2, iar A1 conţine mult mai multe noduri decât A2. Verificaţi dacă A2 arată la fel ca un subarbore din A1.(“Arată la fel”, adică valorile întregi sunt aceleaşi)
  
laboratoare/laborator-04.txt · Ultima modificare: 2018/02/25 22:34 de către mihai.iacov