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ă

Both sides previous revision Versiuni anterioare
Urmatoarea versiune
Versiuni anterioare
Ultima versiune Both sides next revision
laboratoare:laborator-04 [2017/03/12 16:03]
mihai.iacov [Noţiuni introductive]
laboratoare:laborator-04 [2017/03/23 21:02]
iulian.matesica [5.1. Exerciții - schelet de laborator]
Linia 23: Linia 23:
  
 <note tip>​Rădăcina NU poate fi nod-copil.</​note>​ <note tip>​Rădăcina NU poate fi nod-copil.</​note>​
 +
 +===Gradul(Degree)===
 +Gradul unui nod este egal cu numărul de copii ai acestuia.
  
 ===Frunză(Leaf) şi nod intern/​extern(internal/​external)=== ===Frunză(Leaf) şi nod intern/​extern(internal/​external)===
Linia 71: 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 91: 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 221: 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.+ 
 +=== 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 229: 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 20:34 de către mihai.iacov