Differences

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

Link to this comparison view

sd-ca:laboratoare:laborator-10 [2015/05/09 23:19]
cosmin_ioan.petrisor [Exercitii]
sd-ca:laboratoare:laborator-10 [2015/05/15 08:13] (current)
andrei.vasiliu2211 [Exerciții]
Line 1: Line 1:
-====== Laborator 10 - Arbori Binari de Cautare======+====== Laborator 10 - Arbori Binari de Căutare======
 Responsabili:  ​ Responsabili:  ​
   * [[mihai.mneacsu@gmail.com|Mihai Neacşu]]   * [[mihai.mneacsu@gmail.com|Mihai Neacşu]]
Line 72: Line 72:
 #endif // __BINARY_SEARCH_TREE_H #endif // __BINARY_SEARCH_TREE_H
 </​code>​ </​code>​
-===== Exercitii ​=====+===== Exerciții ​=====
  
-Acest laborator se va realiza pornind de la **{{sd-ca:​laboratoare:​lab09-tasks.zip}}**. Observații privind scheletul de cod:+Acest laborator se va realiza pornind de la **{{sd-ca:​laboratoare:​labbst-tasks.zip|scheletul de cod}}**. 
 + 
 +Observații privind scheletul de cod:
   * Scheletul citește N numere dintr-un fișier dat ca parametru în linia de comandă.   * Scheletul citește N numere dintr-un fișier dat ca parametru în linia de comandă.
   * Aceste N numere sunt introduse într-un arbore binar de căutare, funcționalitate pe care voi trebuie sa o implementaţi.   * Aceste N numere sunt introduse într-un arbore binar de căutare, funcționalitate pe care voi trebuie sa o implementaţi.
Line 80: Line 82:
   * Funcția ''​removeKey''​ întoarce adresa noului nod rădăcină,​ dacă s-a șters vechea rădăcină.   * Funcția ''​removeKey''​ întoarce adresa noului nod rădăcină,​ dacă s-a șters vechea rădăcină.
  
-  - [**3p**] Implementați următoarele funcționalități de bază ale unui arbore binar de căutare: +1. [**3p**] Implementați următoarele funcționalități de bază ale unui arbore binar de căutare: 
-    ​[**0.5p**] constructor. (TODO 1.1)  +    ​[**0.5p**] constructor. (TODO 1.1)  
-    ​[**0.5p**] destructor. Eliberați toată memoria alocată. (TODO 1.2) +    ​[**0.5p**] destructor. Eliberați toată memoria alocată. (TODO 1.2) 
-    ​[**0.5p**] adăugare elemente în arbore.(TODO 1.3) +    ​[**0.5p**] adăugare elemente în arbore.(TODO 1.3) 
-    ​[**0.5p**] căutare elemente în arbore. (TODO 1.4) +    ​[**0.5p**] căutare elemente în arbore. (TODO 1.4) 
-    ​[**1p**] parcurgere inordine arbore. (TODO 1.5) +    ​[**1p**] parcurgere inordine arbore. (TODO 1.5) 
-  ​- ​[**2p**] Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: + 
-    ​[**0.5p**] funcții pentru returnare valoare minimă/​maximă din arbore. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare. (TODO 2.1)+2. [**2p**] Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: 
 +    ​[**0.5p**] funcții pentru returnare valoare minimă/​maximă din arbore. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare. (TODO 2.1)
 <code c++> <code c++>
 T findMin (); T findMin ();
 T findMax (); T findMax ();
 </​code>​ </​code>​
-    ​[**0.5p**] calculează şi returnează înălțimea unui arbore. Înălțimea unui arbore se calculează adunând 1 la înălțimea maximă a subarborelui său stâng și a celui drept. (TODO 2.2)+    ​[**0.5p**] calculează şi returnează înălțimea unui arbore. Înălțimea unui arbore se calculează adunând 1 la înălțimea maximă a subarborelui său stâng și a celui drept. (TODO 2.2)
 <code c++> <code c++>
 int findLevels();​ int findLevels();​
 </​code>​ </​code>​
-    ​[**1p**] funcție pentru ​ afișarea cheilor (informației utile) din nodurile situate pe un anumit nivel primit ca parametru. Nivel = distanța de la rădăcină la un nod, nivelul rădăcinii fiind 0. (TODO 2.3)+    ​[**1p**] funcție pentru ​ afișarea cheilor (informației utile) din nodurile situate pe un anumit nivel primit ca parametru. Nivel = distanța de la rădăcină la un nod, nivelul rădăcinii fiind 0. (TODO 2.3)
 <code c++> <code c++>
 void displayLevel(int level); void displayLevel(int level);
 </​code>​ </​code>​
  
-<hidden+3. Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: 
-  ​[**3p**] Implementați funcția de ștergere a unui element. (TODO 3.1)+    - [**3p**]Definim noţiunea de 'calea de la rădacină la frunze'​ ca fiind o secvenţă de noduri ce începe cu nodul rădacină şi coboară spre un nod frunză. Pentru fiecare astfel de cale din arbore însumaţi valorile din noduri. Afişaţi în ordine descrescătoare sumele obţinute pentru fiecare cale din arbore de la rădăcină la frunze. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare complet. (TODO 3) 
 +<code
 + 
 +               ​15 ​            
 +             / ​   \                                     
 +           ​10 ​     20                                      
 +           / ​     /  \                                    
 +          4      17   ​23 ​                                 
 +         / \    /  \    \ 
 +        2   ​6 ​ 16  19   32 
 +</​code>​ 
 + 
 +4. [**3p**] Implementați funcția de ștergere a unui element. (TODO 4)
 <note important>​ <note important>​
-**Atenție** 
 Trebuie să tratați și cazul în care se va șterge elementul din rădăcină. Trebuie să tratați și cazul în care se va șterge elementul din rădăcină.
 </​note>​ </​note>​
-  - Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: + 
-    - [**3p**]Definim noţiunea de 'calea de la rădacină la frunze'​ ca fiind o secvenţă de noduri ce începe cu nodul rădacină şi coboară spre un nod frunză. Pentru fiecare astfel de cale din arbore însumaţi valorile din noduri. Afişaţi în ordine descrescătoare sumele obţinute pentru fiecare cale din arbore de la rădăcină la frunze. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare complet. (TODO 2.4) <​code>​+<​hidden>​ 
 +3. Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: 
 +    - [**3p**]Definim noţiunea de 'calea de la rădacină la frunze'​ ca fiind o secvenţă de noduri ce începe cu nodul rădacină şi coboară spre un nod frunză. Pentru fiecare astfel de cale din arbore însumaţi valorile din noduri. Afişaţi în ordine descrescătoare sumele obţinute pentru fiecare cale din arbore de la rădăcină la frunze. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare complet. (TODO 3) 
 +<​code>​
  
                ​15 ​           ​                ​15 ​           ​
Line 117: Line 134:
          / \    /  \    \          / \    /  \    \
         2   ​6 ​ 16  19   32         2   ​6 ​ 16  19   32
-</hidden>           +</code> 
 + 
 + 
 +3. Implementați următoarele funcționalități avansate ale unui arbore binar de căutare: 
 +    - [**3p**]Definim noţiunea de 'calea de la rădacină la frunze'​ ca fiind o secvenţă de noduri ce începe cu nodul rădacină şi coboară spre un nod frunză. Pentru fiecare astfel de cale din arbore însumaţi valorile din noduri. Afişaţi în ordine descrescătoare sumele obţinute pentru fiecare cale din arbore de la rădăcină la frunze. Implementaţi eficient, ţinând cont de faptul ca arborele binar este unul de căutare complet. (TODO 3) 
 +<​code>​ 
 + 
 +               ​15 ​            
 +             / ​   \                                     
 +           ​10      20                                      
 +           / ​     /  \                                    
 +          4      17   ​23 ​                                 
 +         / \    /  \    \ 
 +        2   ​6 ​ 16  19   32 
 +</​code>​ 
 + 
 +</​hidden>​  
 +          ​
sd-ca/laboratoare/laborator-10.1431202794.txt.gz · Last modified: 2015/05/09 23:19 by cosmin_ioan.petrisor
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