Arbori

Arbori și vectorul de tați (doar matematică-informatică)

Doar la matematică-informatică. Rădăcină, fii, frați, frunze, niveluri și cele trei reprezentări din programă. Cum desenezi arborele din vectorul de tați în câteva secunde și ce întreabă itemii oficiali.

  • 26 min
  • La BAC: I (4p) · Subiectul al II-lea, 2 (6p)
  • De revizuit
Ilustrație: Arbori și vectorul de tați (doar matematică-informatică)
Ilustrație generată pentru ZECE (artistică, nu o planșă științifică: pentru detalii exacte vezi schemele din lecție).

ții minte doar fișa asta și ești acoperit

Fișa de aur

  1. 01

    Doar la matematică-informatică. La științele naturii, arborii nu sunt în programă.

  2. 02

    17 itemi din 46 de grafuri și arbori, în lucrările MI din 2023-2027. La 10 dintre ei, arborele e dat prin vectorul de tați.

  3. 03

    t[i] este tatăl lui i. Valoarea 0 arată rădăcina.

    Truc: Poziția e copilul, valoarea e tatăl.

  4. 04

    Fiii lui x: toate pozițiile pe care scrie x în vector.

  5. 05

    Frunzele: numerele care nu apar în vector.

  6. 06

    Numărul de niveluri: cel mai mare nivel, plus 1, pentru că rădăcina e pe nivelul 0.

  7. 07

    Descendenți direcți sau toți descendenții: enunțul spune care. La specială 2023, doar fiii aduc 3 p din 6.

1 din 10

Pe scurt

2 minesențialul, de recitit oricând

Culorile din lecție:termencifră, datăidee-cheie

  • Doar la matematică-informatică. Punctul 11.3 din programă nu apare la științele naturii.
  • Un arbore e un graf neorientat conex și fără cicluri. Când alegi o rădăcină, capătă sus și jos: tați, fii, frați, frunze, niveluri.
  • Din 46 de itemi de grafuri și arbori din lucrările MI 2023-2027, 17 sunt pe arbori, iar 10 dintre aceștia dau arborele printr-un vector de tați.
  • Lucrările scriu cuvintele în ghilimele: vector de „tați”, descendenți direcți („fii”), noduri „frunză”.

Ideea, apoi numele oficial

5 min o întrebare la final

Un arbore genealogic: sus un om, sub el copiii lui, sub ei copiii lor. Fiecare are un singur părinte în desen. Asta e tot ce îți trebuie.

Un arbore cu 7 noduri

4752631
Nivelurile: 0 pentru 1; 1 pentru 2, 3; 2 pentru 4, 5, 6; 3 pentru 7. Arborele are 4 niveluri.
vârful de sus
Termen oficial
rădăcină
În arborele de mai sus
1
copil
Termen oficial
fiu, descendent direct
În arborele de mai sus
fiii lui 2: 4 și 5
orice urmaș
Termen oficial
descendent
În arborele de mai sus
ai lui 2: 4, 5, 7
părinte
Termen oficial
tată, ascendent direct
În arborele de mai sus
tatăl lui 7: 5
orice strămoș
Termen oficial
ascendent
În arborele de mai sus
ai lui 7: 5, 2, 1
același părinte
Termen oficial
frați
În arborele de mai sus
4 și 5
fără copii
Termen oficial
frunză, nod terminal
În arborele de mai sus
4, 6, 7
cât de jos e
Termen oficial
nivel
În arborele de mai sus
7 e pe nivelul 3
1 / 8

Lucrările definesc nivelul explicit: un nod este pe nivelul x dacă lanțul elementar dintre el și rădăcină are lungimea x. Pe nivelul 0 se află doar rădăcina.

Care e diferența dintre descendent și descendent direct?

Trei reprezentări

2 min

Programa cere trei.

Matricea de adiacență, ca la orice graf neorientat, are a[i][j]=1 dacă există muchia [i,j].

Listele de descendenți dau, pentru fiecare nod, fiii lui:

1: 2, 3
2: 4, 5
3: 6
4: (niciun fiu)
5: 7
6: (niciun fiu)
7: (niciun fiu)

Vectorul de tați dă, pentru fiecare nod, tatăl lui. Rădăcina are 0.

Vectorul de tați al arborelui de mai sus

01122351234567
t[4]=2 spune: tatăl lui 4 este 2.

E cea mai folosită în lucrări, pentru că încape pe un rând.

Din vector în desen

3 min

  1. Găsești rădăcina
    Poziția pe care e 0.
  2. Grupezi
    Pentru fiecare valoare x, scrii pozițiile pe care apare x: aceștia sunt fiii lui x.
  3. Desenezi
    De la rădăcină în jos.

În C++, aceleași întrebări se rezolvă așa:

int t[101],nf[101],n,i;
cin>>n;
for(i=1;i<=n;i++)
  cin>>t[i];
// radacina
for(i=1;i<=n;i++)
  if(t[i]==0) cout<<i<<" ";
// numarul de fii
for(i=1;i<=n;i++)
  if(t[i]!=0) nf[t[i]]++;
// frunzele
for(i=1;i<=n;i++)
  if(nf[i]==0) cout<<i<<" ";

Nivelul unui nod îl afli urcând spre rădăcină:

int nivel(int x)
{ int k=0;
  while(t[x]!=0)
  { x=t[x];
    k++;
  }
  return k;
}

Pentru vectorul de mai sus, nivel(7) este 3: de la 7 urci la 5, 2, 1.

În Pascal: t:array[1..100] of integer, restul se scrie la fel. Nu am găsit în lucrările 2023-2027 niciun item care să ceară un program pe arbore, dar programa cere reprezentările, deci e bine să știi cum arată.

Oficial: iulie 2024, varianta 3, II.2

1 min 2 întrebări la final

Arbore cu 8 noduri și vectorul de tați (3,0,2,5,2,5,1,5). Se cer, în ordinea parcurgerii, nodurile celui mai lung lanț elementar cu extremitatea inițială în rădăcină.

Vectorul (3,0,2,5,2,5,1,5), desenat

71346852
Cel mai lung lanț de la rădăcină este 2, 3, 1, 7.

Răspuns: 2, 3, 1, 7.

Câte muchii are un arbore cu 8 noduri?

(7,4,6,7,4,7,0,9,6,5): câte frunze?

Oficial: simulare 2024, II.2

2 min

Vectorul este (8,1,4,5,0,9,4,5,4,3). Se cer toate nodurile cu un singur descendent direct.

TatăFii

1
2
3
10
4
3, 7, 9
5
4, 8
8
1
9
6

Răspuns: 1, 3, 8, 9.

Barem: 6 p pentru toate. Punctajele parțiale: numai 2 p dacă un singur nod e bun, 3 p pentru două, 4 p pentru trei și 5 p dacă ai enumerat cinci sau șase noduri, dintre care patru sunt bune.

Oficial: sesiunea specială 2023, varianta 6, II.2

1 min

Vectorul este (0,1,1,2,2,4,5,1). Se cer toți descendenții nodului 2.

  • Fiii lui 2: pozițiile cu valoarea 2, adică 4 și 5.
  • Fiul lui 4 este 6, fiul lui 5 este 7.
  • Nu există alți fii.

Răspuns: 4, 5, 6, 7. Barem: numai 3 p dacă ai scris doar descendenții direcți.

Oficial: grile de 4 puncte

6 min

August 2024, var. 8, I.4
Vector
(13,3,0,6,13,3,3,7,6,2,13,2,6,13)
Se cere
rădăcina
Răspuns
3 (b): 0 e pe poziția 3
Simulare 2025, I.4
Vector
(4,3,7,6,7,8,6,0,7,7,7)
Se cere
numărul maxim de fii
Răspuns
5 (b): 7 apare de 5 ori
Model 2024, I.4
Vector
(7,4,6,7,4,7,0,9,6,5)
Se cere
numărul de frunze
Răspuns
5 (b): nu apar 1, 2, 3, 8, 10
Rezervă 2026, var. 5, I.4
Vector
(3,4,0,3,4,8,2,3)
Se cere
numărul de niveluri
Răspuns
4 (c): 7 e pe nivelul 3
1 / 4

Pentru rezervă 2026, nivelurile sunt: 3 pe nivelul 0; 1, 4, 8 pe nivelul 1; 2, 5, 6 pe nivelul 2; 7 pe nivelul 3.

Iunie 2023, varianta 5, I.4. Se cere un vector de tați pentru un arbore cu 7 noduri în care un nod are trei ascendenți.

  • a. (0,1,2,1,1,1,2): cel mai adânc nod e pe nivelul 2, deci are doi ascendenți.
  • b. (3,0,2,1,3,2,1): rădăcina e 2. Lanțul 4, 1, 3, 2 dă lui 4 trei ascendenți: 1, 3, 2. Barem: varianta b.
  • c. (4,3,0,3,4,4,3): rădăcina e 3, iar cel mai adânc nod e pe nivelul 2.
  • d. (5,4,3,0,2,3,4): t[3]=3, deci nodul 3 e propriul tată. Nu e un arbore.

Ce se cere la BAC

2 mincum apare la examen

Tip de itemUnde a apărut

Rădăcina, frunzele, fiii
august 2024 I.4, model 2024 I.4, simulare 2025 I.4, simulare 2024 II.2
Descendenți sau ascendenți
specială 2023 II.2, iunie 2023 I.4
Lanț de la rădăcină, niveluri
iulie 2024 II.2, rezervă 2026 I.4
Rădăcină aleasă de tine, niveluri, probleme de construcție
în lecția următoare

Greșeli care costă puncte

2 mincapcanele de evitat

  • Citești vectorul invers: poziția e fiul, valoarea e tatăl.
  • Scrii doar fiii, când se cer toți descendenții. La sesiunea specială 2023 asta înjumătățește punctajul.
  • Numeri nivelurile de la 1, deși rădăcina e pe nivelul 0.
  • Uiți că frunzele sunt numerele care lipsesc din vector și le numeri pe cele care apar o singură dată.
  • Enumeri lanțul de jos în sus, deși enunțul cere extremitatea inițială în rădăcină.
  • Sari peste o valoare când grupezi. Scrie toate pozițiile sub vector înainte să numeri.

Termeni-cheie

Arbore
Graf neorientat conex și fără cicluri. Cu n noduri are n-1 muchii.
Rădăcină
Nodul ales ca punct de plecare. Nu are tată; în vectorul de tați are valoarea 0.
Descendent direct sau fiu
Nodul aflat imediat sub alt nod, legat de el printr-o muchie.
Descendent
Orice nod aflat mai jos, pe un lanț care coboară din nodul dat.
Ascendent direct, tată sau părinte
Nodul aflat imediat deasupra. Orice nod în afară de rădăcină are exact un tată.
Ascendent
Orice nod de pe lanțul de la nodul dat până la rădăcină.
Frați
Noduri cu același tată.
Frunză sau nod terminal
Nod fără fii.
Nivel
Lungimea lanțului elementar dintre nod și rădăcină. Rădăcina este pe nivelul 0.
Vector de tați
Tablou t în care t[i] este tatăl nodului i, iar pentru rădăcină t[i] este 0.

Notițele mele

Salvat local

Surse