Didaxis
lecție · Informatică

Arbore binar complet

Proprietăți și reprezentare secvențială.

Se face în:
Clasa a XI-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Un arbore binar complet are toate nivelurile pline. Dacă rădăcina este pe nivelul 0 și ultimul nivel este h, numărul total de noduri este 2^{h+1}-1. De exemplu, arborele cu 1 rădăcină și 2 fii are 3 noduri și este complet.

Un arbore binar aproape complet are toate nivelurile, în afară eventual de ultimul, pline; nodurile ultimului nivel ocupă primele locuri de la stânga. Arborele cu nodurile 1, 2, 3, 4, în această ordine pe niveluri, este aproape complet, dar nu complet: nivelul ultim conține numai nodul 4, fiul stâng al lui 2. Aceasta este forma folosită de heap.

Desen la lecția „Arbore binar complet”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Pentru reprezentarea secvențială a unui arbore binar aproape complet, cu indici de la 1, fiii nodului de pe poziția sunt pe și , când aceste poziții nu depășesc ; tatăl său este pe . Cu indici de la 0, pozițiile fiilor sunt și , iar tatăl este pe . Pe nivelul încap cel mult noduri, iar un arbore complet cu ultimul nivel are noduri, dintre care sunt frunze. Înălțimea arborelui aproape complet cu noduri este , dacă rădăcina este pe nivelul 0. Nu este nevoie de pointeri: poziția în vector determină legăturile.

Exemplul 1 — fiul stâng prin indice.

#include <iostream>
using namespace std;
int main() {
    int v[] = {0, 1, 2, 3, 4};
    int i = 2, n = 4;
    if (2 * i <= n) cout << v[2 * i];
    if (2 * i + 1 <= n) cout << " " << v[2 * i + 1];
}

Pozițiile sunt 1–4, iar v[0] este neutilizat. Pentru i=2, fiul stâng se află pe poziția 4 și are valoarea 4; poziția 5 a fiului drept depășește n, deci nodul 2 are un singur fiu și programul afișează 4. Forma arborelui nu impune ordinea valorilor; condiția de ordine apare separat la heap.

Exemplul 2 — niveluri, înălțime și frunze pentru . Programul află nivelul fiecărui nod împărțind repetat indicele la 2 până la 1 și numără frunzele, adică nodurile pentru care :

#include <iostream>
using namespace std;
int main() {
    int n = 10, frunze = 0, h = 0;
    for (int i = 1; i <= n; ++i) {
        int x = i, nivel = 0;
        while (x > 1) { x /= 2; ++nivel; }
        cout << nivel << " ";
        if (nivel > h) h = nivel;
        if (2 * i > n) ++frunze;
    }
    cout << "\n" << h << " " << frunze;
}

Se afișează 0 1 1 2 2 2 2 3 3 3, apoi 3 5. Nivelurile conțin 1, 2, 4 și 3 noduri: primele trei sunt pline, iar ultimul are 3 noduri în loc de 8, așezate la stânga. Înălțimea este . Frunzele sunt nodurile 6, 7, 8, 9 și 10; nodul 5 are fiii 10 și 11, dar 11 depășește , deci doar fiul 10 există. Un arbore aproape complet cu noduri are frunze, adică nodurile de pe pozițiile .

Arbore complet. Cu 3 niveluri pline (înălțimea 2) sunt noduri, iar cu 4 niveluri pline sunt 15, dintre care 8 frunze. Un număr de noduri care nu are forma nu poate forma un arbore complet. De aceea arborele cu 4 noduri este aproape complet, dar nu complet.

Exemplu în formatul examenului. Un arbore binar aproape complet cu 11 noduri este memorat într-un vector cu indici de la 1. Care sunt fiii și tatăl nodului de pe poziția 5?

  • a) fiii 9 și 10, tatăl 2
  • b) fiii 10 și 11, tatăl 2
  • c) fiii 10 și 11, tatăl 3
  • d) fiul 10, tatăl 2

Răspunsul corect este b). Fiii sunt pe pozițiile și , iar ambele nu depășesc . Tatăl este pe poziția . Varianta a) folosește și în loc de și , iar varianta c) calculează greșit tatăl, ca . Varianta d) ar fi corectă pentru un arbore cu 10 noduri. În acest arbore, nodul de pe poziția 6 nu are fii, deoarece .

Greșeli frecvente

  • Greșit: arborele cu patru noduri dispuse pe niveluri este complet.
    Corect: este aproape complet; pentru două niveluri pline sunt necesare 3 noduri, iar pentru trei niveluri pline, 7.
  • Greșit: la indexarea de la 1, fiul stâng al poziției i este la 2i+1.
    Corect: este la 2i.
  • Greșit: „complet” înseamnă că valorile sunt sortate.
    Corect: numește forma arborelui, nu ordinea cheilor.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI intensiv; rocnee.eu

Documente consultate

  • Programa școlară de informatică intensiv, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
  • OpenDSA, „Array Implementation for Complete Binary Trees”, opendsa.cs.vt.edu/OpenDSA/Books/Catalog/html/CompleteTree.html

Desene: Redactare proprie (desen original), conform OMECI 5099/2009, anexa 5, Informatică XI intensiv, p. 4–5; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.