<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_XI-a_lec%C8%9Bia_31</id>
	<title>Clasa a XI-a lecția 31 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_XI-a_lec%C8%9Bia_31"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_31&amp;action=history"/>
	<updated>2026-04-13T02:16:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_31&amp;diff=17788&amp;oldid=prev</id>
		<title>Bella at 09:02, 15 May 2020</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_31&amp;diff=17788&amp;oldid=prev"/>
		<updated>2020-05-15T09:02:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== BFS - folosind vectorul de tati ==&lt;br /&gt;
* Determinarea inaltimii unui arbore&lt;br /&gt;
* Afisarea nodurilor in ordinea parcurgerii&lt;br /&gt;
&lt;br /&gt;
Pentru a parcurge in latime un graf pentru care stim vectorii de tati, vom proceda in felul urmator.&lt;br /&gt;
* Identificam nodul radacina in vectorul de tati (este nodul pentru care tatal este 0) ;&lt;br /&gt;
* Pornim pargurgerea grafului din nodul radacina si adaugam nodurile parcurse intr-o coada.&lt;br /&gt;
* In timp ce parcurgem nodurile putem marca nivelul pe care se gaseste fiecare nod, nodul radacina va fi marcat ca avand nivelul 1 in graf. &lt;br /&gt;
* Algoritmul de parcurgere va cauta pentru fiecare nod, descendentii acestuia in vectorul de tati cautare ce se realizeaza pentru un singur nod in O(n), respectiv pentru toate cele n noduri O(n^2). Pentru fiecare nod &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Se citeste vectorul de tati asociat unui arbore cu radacina.&lt;br /&gt;
1. Afisati cate nivele are arborele?&lt;br /&gt;
2. Afisati nodurile arborelui parcurgand arborele in latime, pornind din nodul radacina&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;inaltime.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;inaltime.out&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
int t[101];&lt;br /&gt;
int c[101], niv[101];         // in viz punem nivelul&lt;br /&gt;
int n;&lt;br /&gt;
void bfs( int r ){&lt;br /&gt;
  int p, u;&lt;br /&gt;
  p = u = 1;&lt;br /&gt;
  c[1] = r;                             // pun in coada radacina&lt;br /&gt;
  niv[1] = 1;                           // nivelul primului nod introdus este 1&lt;br /&gt;
  while( p &amp;lt;= u ){&lt;br /&gt;
    for( int i = 1; i &amp;lt;= n; i++ )       // parcurg vectorul de tati si caut nodurile pentru care c[p] e tata&lt;br /&gt;
      if( t[i] == c[p] ){               // daca i e descendent al lui c[p] = daca nodul i il are ca tata pe c[p]&lt;br /&gt;
        c[++u] = i;                     // il pun in coada&lt;br /&gt;
        niv[u] = niv[p] + 1;            // il marchez ca vizitat, i are nivelul lui nod + 1&lt;br /&gt;
      }&lt;br /&gt;
    p++;                              // trec la urm element din coada&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, r;&lt;br /&gt;
&lt;br /&gt;
  // citesc vectorul de tati si identific radacina&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; t[i];&lt;br /&gt;
    if( t[i] == 0 )&lt;br /&gt;
      r = i;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // parcurg graful in latime pornind din nodul radacina&lt;br /&gt;
  bfs( r );&lt;br /&gt;
  &lt;br /&gt;
  // nivelul ultimului element vizitat este chiar inaltimea arborelui&lt;br /&gt;
  fout &amp;lt;&amp;lt; niv[n] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;       &lt;br /&gt;
  &lt;br /&gt;
  // afisez nodurile memorate in vectorul coada, in ordinea parcurgerii&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
    fout &amp;lt;&amp;lt; c[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== DFS - folosind vectorul de tati ==&lt;br /&gt;
Pentru a determina inaltimea unui graf, putem de asemenea sa parcurgem graful in adancime si sa marcam nivelul unui nod ca fiind nivelul cu 1 mai mult decat ascendentul lui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;inaltime.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;inaltime.out&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
int t[101];&lt;br /&gt;
int niv[101];         // in viz punem nivelul&lt;br /&gt;
int n, nivmax;&lt;br /&gt;
void dfs( int r ){&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
    if( t[i] == r ){       // daca daca r e tatal lui i&lt;br /&gt;
      niv[i] = niv[r] + 1;&lt;br /&gt;
      if (niv[i] &amp;gt; nivmax )&lt;br /&gt;
        nivmax = niv[i];&lt;br /&gt;
      dfs(i);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, r;&lt;br /&gt;
&lt;br /&gt;
  // citesc vectorul de tati si identific radacina&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; t[i];&lt;br /&gt;
    if( t[i] == 0 )&lt;br /&gt;
      r = i;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // parcurg graful in adancime pornind din nodul radacina&lt;br /&gt;
&lt;br /&gt;
  niv[r] = 1;&lt;br /&gt;
  dfs( r );&lt;br /&gt;
&lt;br /&gt;
  // nivelul maxim atins in parcurgerea dfs&lt;br /&gt;
  fout &amp;lt;&amp;lt; nivmax &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicatii =&lt;br /&gt;
==[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=636 Arbore] ==	&lt;br /&gt;
Se dau cele n-1 muchii ale unui arbore cu n noduri și un nod k . Afișați vectorul de tați al arborelui cu rădăcina în k.&lt;br /&gt;
=== Parcurgere cu DFS ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Parcurgem in agancime arborele si marcam pentru fiecare nod tatal intr-un vector de tati&lt;br /&gt;
// Nodul radacina va avea 0 ca tata.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;arbore.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;arbore.out&amp;quot; );&lt;br /&gt;
int a[101][101];&lt;br /&gt;
int t[101],viz[101];&lt;br /&gt;
int n, k;&lt;br /&gt;
void dfs( int k ){&lt;br /&gt;
  viz[k] = 1;&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
    if( a[k][i] == 1 &amp;amp;&amp;amp; !viz[i] ){&lt;br /&gt;
      t[i] = k;&lt;br /&gt;
      dfs(i);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, x, y;&lt;br /&gt;
  fin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n - 1; i++ ){  // citim cele n-1 muchii&lt;br /&gt;
    fin &amp;gt;&amp;gt; x &amp;gt;&amp;gt; y;&lt;br /&gt;
    a[x][y] = a[y][x] = 1;        // le marcam in matricea de adiacenta&lt;br /&gt;
  }&lt;br /&gt;
  dfs(k);                         // parcurgem in adancime graful si marcam pentru fiecare nod tatal&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ )       // afisam vectorul de tati&lt;br /&gt;
    fout &amp;lt;&amp;lt; t[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parcurgere cu BFS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Parcurgem in latime arborele si marcam pentru fiecare nod tatal intr-un vector de tati&lt;br /&gt;
// Nodul radacina va vea 0 ca tata.&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin(&amp;quot;arbore.in&amp;quot;);&lt;br /&gt;
ofstream fout(&amp;quot;arbore.out&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
int A[101][101],viz[101],c[101], t[101];&lt;br /&gt;
int n,k;&lt;br /&gt;
void bfs( int r ){&lt;br /&gt;
  int p, u, nod;&lt;br /&gt;
  p = u = 0;&lt;br /&gt;
  c[p] = r;&lt;br /&gt;
  viz[r] = 1;&lt;br /&gt;
  while( p &amp;lt;= u ){&lt;br /&gt;
    nod = c[p];  // nodul pentru care pun&lt;br /&gt;
    for( int i = 1; i &amp;lt;= n; i++ )     // parcurg linia nod&lt;br /&gt;
      if( A[nod][i] == 1 &amp;amp;&amp;amp; !viz[i] ){// daca i e vecin cu nod&lt;br /&gt;
        c[++u] = i;                   // il pun in coada&lt;br /&gt;
        viz[nod] = 1;                 // il marchez ca vizitat&lt;br /&gt;
        t[i] = nod;                   // tatal nodului i este nod&lt;br /&gt;
      }&lt;br /&gt;
    p++;                              // trec la urm element din coada&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int x, y;&lt;br /&gt;
    fin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;&lt;br /&gt;
    t[k] = 0;&lt;br /&gt;
    for( int i = 1; i &amp;lt; n; i++ ){&lt;br /&gt;
        fin &amp;gt;&amp;gt; x &amp;gt;&amp;gt; y;&lt;br /&gt;
        A[x][y] = A[y][x] = 1;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    bfs( k );&lt;br /&gt;
    for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
      fout &amp;lt;&amp;lt; t[i] &amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=639 Inaltime] ==&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri. Determinați înălțimea arborelui.&lt;br /&gt;
=== DFS - folosind vectorul de tati ===&lt;br /&gt;
Pentru a determina inaltimea unui graf, putem de asemenea sa parcurgem graful in adancime si sa marcam nivelul unui nod ca fiind nivelul cu 1 mai mult decat ascendentul lui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;inaltime.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;inaltime.out&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
int t[101];&lt;br /&gt;
int niv[101];         // in viz punem nivelul&lt;br /&gt;
int n, nivmax;&lt;br /&gt;
void dfs( int r ){&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
    if( t[i] == r ){       // daca daca r e tatal lui i&lt;br /&gt;
      niv[i] = niv[r] + 1;&lt;br /&gt;
      if (niv[i] &amp;gt; nivmax )&lt;br /&gt;
        nivmax = niv[i];&lt;br /&gt;
      dfs(i);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, r;&lt;br /&gt;
&lt;br /&gt;
  // citesc vectorul de tati si identific radacina&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; t[i];&lt;br /&gt;
    if( t[i] == 0 )&lt;br /&gt;
      r = i;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // parcurg graful in adancime pornind din nodul radacina&lt;br /&gt;
&lt;br /&gt;
  niv[r] = 1;&lt;br /&gt;
  dfs( r );&lt;br /&gt;
&lt;br /&gt;
  // nivelul maxim atins in parcurgerea dfs&lt;br /&gt;
  fout &amp;lt;&amp;lt; nivmax &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=652 AfisareFii] ==&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și k noduri distincte din arbore. Afișați fiii fiecăruia dintre cele k noduri.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;afisarefii.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;afisarefii.out&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
int t[101];&lt;br /&gt;
int f[101];&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, i, k, j, x;&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; t[i];&lt;br /&gt;
    f[t[i]] ++;            // numar in f cate noduri au ca tata pe t[i]&lt;br /&gt;
  }&lt;br /&gt;
  fin &amp;gt;&amp;gt; k;&lt;br /&gt;
  for( i = 1; i &amp;lt;= k; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; x;&lt;br /&gt;
    fout &amp;lt;&amp;lt; f[x] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    for( j = 1; j &amp;lt;= n; j++ ) // afisam nodurile care il au ca tata pe x&lt;br /&gt;
      if( t[j] == x )&lt;br /&gt;
        fout &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    fout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [https://www.pbinfo.ro/probleme/637/frunze Frunze] ==&lt;br /&gt;
&lt;br /&gt;
Cerința : Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri. Determinați rădăcina arborelui și frunzele acestuia.&lt;br /&gt;
Date de intrare: Fișierul de intrare frunze.in conține pe prima linie numărul de noduri n. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.&lt;br /&gt;
Date de ieșire: Fișierul de ieșire frunze.out va conține pe prima linie rădăcina arborelui. A doua linia va conține numărul de frunze din arbore, iar următoarea linie frunzele, în ordine crescătoare și separate printr-un spațiu.&lt;br /&gt;
Restricții și precizări&lt;br /&gt;
1 ≤ n ≤ 100&lt;br /&gt;
în vectorul de tați rădăcina este marcată cu 0&lt;br /&gt;
&lt;br /&gt;
Exemplu&lt;br /&gt;
frunze.in&lt;br /&gt;
7&lt;br /&gt;
4 1 7 0 7 7 1 &lt;br /&gt;
frunze.out&lt;br /&gt;
4&lt;br /&gt;
4&lt;br /&gt;
2 3 5 6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream fin( &amp;quot;frunze.in&amp;quot; );&lt;br /&gt;
ofstream fout( &amp;quot;frunze.out&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
int t[101];&lt;br /&gt;
int f[101];&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, i;&lt;br /&gt;
&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
    fin &amp;gt;&amp;gt; t[i];&lt;br /&gt;
    f[t[i]] ++;            // numar in f cate noduri au ca tata pe t[i]&lt;br /&gt;
    if( t[i] == 0 )        // daca i e radacina arborelui&lt;br /&gt;
      fout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;   // il afisez&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int frunze = 0;          // numar frunzele arborelul&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
      if( f[i] == 0 )      // i e frunza daca nu apare ca tata la niciun nod&lt;br /&gt;
        frunze ++;&lt;br /&gt;
  fout &amp;lt;&amp;lt; frunze &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  for( i = 1; i &amp;lt;= n; i++ )// afisez toate nodurile frunza&lt;br /&gt;
    if( f[i] == 0 )&lt;br /&gt;
      fout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    fout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tema Teorie = &lt;br /&gt;
==[https://www.pbinfo.ro/probleme/650/knivel kNivel]==	&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și o valoare k. Determinați nodurile situate pe nivelul k în arbore.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[https://www.pbinfo.ro/probleme/640/nrfii NrFii]==	&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri. Determinați nodul din arbore cu număr maxim de fii. Dacă în arbore sunt mai multe noduri cu număr maxim de fii, afișați-le pe toate, în ordine crescătoare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==[https://www.pbinfo.ro/probleme/641/subarbore Subarbore] ==	&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și un nod k. Afișați, în ordine crescătoare, nodurile din subarborele cu rădăcina în k.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==[https://www.pbinfo.ro/probleme/648/subarborenumarare SubarboreNumarare]==	&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și un nod k. Determinați câte noduri conține subarborele cu rădăcina în k.&lt;br /&gt;
&lt;br /&gt;
= Laborator =&lt;br /&gt;
== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=638 Nivele] ==&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și k noduri din arbore. Determinați pentru fiecare dintre cele k noduri nivelul pe care se află.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=2749 tata]	==&lt;br /&gt;
Se dă un vector t=(t[1], t[2], ..., t[n]) care memorează numere naturale cuprinse între  0 și n. Să se verifice dacă t este sau nu vector de tați asociat unui arbore cu rădăcină.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>