MeditatiiDirect.ro Logo
MeditatiiDirect.ro
Educație la un click distanță
MeditatiiMateriiAdmitereTutorialePregatire BACSubiecte BACVariante BACBlog
InformaticăliceuClasa 11dificil

Arbori Binari de Căutare (BST) în C++

Implementare completă BST: inserare, căutare, ștergere, parcurgeri și operații avansate.

2 luni în urmă
0 vizualizări
40 minute

Arbori Binari de Căutare (BST) în C++

Ce este un BST?

Un arbore binar în care pentru fiecare nod:

  • •Toate valorile din subarborele stâng sunt mai mici
  • •Toate valorile din subarborele drept sunt mai mari

Implementare

1#include <iostream>
2using namespace std;
3
4struct Nod {
5    int valoare;
6    Nod* stang;
7    Nod* drept;
8    
9    Nod(int val) : valoare(val), stang(nullptr), drept(nullptr) {}
10};
11
12class BST {
13private:
14    Nod* radacina;
15    
16    Nod* inserare(Nod* nod, int val) {
17        if (!nod) return new Nod(val);
18        
19        if (val < nod->valoare)
20            nod->stang = inserare(nod->stang, val);
21        else if (val > nod->valoare)
22            nod->drept = inserare(nod->drept, val);
23        
24        return nod;
25    }
26    
27    Nod* minim(Nod* nod) {
28        while (nod->stang)
29            nod = nod->stang;
30        return nod;
31    }
32    
33    Nod* sterge(Nod* nod, int val) {
34        if (!nod) return nullptr;
35        
36        if (val < nod->valoare)
37            nod->stang = sterge(nod->stang, val);
38        else if (val > nod->valoare)
39            nod->drept = sterge(nod->drept, val);
40        else {
41            // Nodul de șters găsit
42            if (!nod->stang) {
43                Nod* temp = nod->drept;
44                delete nod;
45                return temp;
46            }
47            if (!nod->drept) {
48                Nod* temp = nod->stang;
49                delete nod;
50                return temp;
51            }
52            
53            // Nod cu 2 copii: înlocuim cu succesorul inordine
54            Nod* temp = minim(nod->drept);
55            nod->valoare = temp->valoare;
56            nod->drept = sterge(nod->drept, temp->valoare);
57        }
58        return nod;
59    }
60    
61    void inordine(Nod* nod) {
62        if (!nod) return;
63        inordine(nod->stang);
64        cout << nod->valoare << " ";
65        inordine(nod->drept);
66    }
67    
68public:
69    BST() : radacina(nullptr) {}
70    
71    void inserare(int val) {
72        radacina = inserare(radacina, val);
73    }
74    
75    bool cauta(int val) {
76        Nod* curent = radacina;
77        while (curent) {
78            if (val == curent->valoare) return true;
79            if (val < curent->valoare)
80                curent = curent->stang;
81            else
82                curent = curent->drept;
83        }
84        return false;
85    }
86    
87    void sterge(int val) {
88        radacina = sterge(radacina, val);
89    }
90    
91    void afisareInordine() {
92        inordine(radacina);
93        cout << endl;
94    }
95};
96
97int main() {
98    BST arbore;
99    arbore.inserare(50);
100    arbore.inserare(30);
101    arbore.inserare(70);
102    arbore.inserare(20);
103    arbore.inserare(40);
104    
105    arbore.afisareInordine();  // 20 30 40 50 70
106    
107    cout << arbore.cauta(30) << endl;  // 1 (true)
108    
109    arbore.sterge(30);
110    arbore.afisareInordine();  // 20 40 50 70
111    
112    return 0;
113}

Complexitate

OperațieMediuCel mai rău
CăutareO(log n)O(n)
InserareO(log n)O(n)
ȘtergereO(log n)O(n)

Cel mai rău caz apare când arborele degenerează în listă.

Tutorialul te-a ajutat?

Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații

MeditatiiDirect.ro Logo
MeditatiiDirect.ro

Platforma educationala din Romania pentru meditatii particulare. Profesori verificati, recenzii reale, inscriere gratuita.

Cauta sau publica anunturi gratuit pentru toate materiile scolare.

Meditatii

  • Meditatii
  • Meditatii Matematica
  • Meditatii Informatica
  • Meditatii Romana
  • Meditatii Engleza
  • Anunturi Meditatii
  • Meditatii Online
  • Ore Online
  • Meditatii BAC
  • Meditatii Bucuresti
  • Meditatii Cluj-Napoca
  • Meditatii Timisoara
  • Meditatii Iasi
  • Meditatii Fizica
  • Meditatii Chimie
  • Meditatii Biologie

Materii Populare

  • Matematică
  • Limba Română
  • Limba Engleză
  • Informatică
  • Fizică
  • Toate Materiile →

Platforma

  • Cum functioneaza
  • Pentru elevi si parinti
  • Pentru profesori
  • Intrebari frecvente
  • Despre noi
  • Publica anunt gratuit

Resurse

  • Profesor Particular
  • Pregatire BAC
  • Admitere Facultate
  • Universitati Romania
  • Facultati Medicina
  • Facultati Informatica
  • Facultati Politehnica
  • Facultati Drept
  • Facultati Economice
  • Facultati Psihologie
  • Grile UPB
  • Grile Medicina
  • Grile Auto 2026
  • Variante BAC 2026
  • Simulare BAC 2026
  • Subiecte BAC
  • Subiecte Admitere
  • Titularizare 2025
  • Tutoriale
  • Blog educational
  • Ore Online
  • Profesori Online
  • Contact

MeditatiiDirect.ro este o platforma educationala din Romania unde gasesti meditatii si profesori particulari verificati pentru matematica, limba romana, engleza, informatica, fizica, chimie si alte materii. Disponibil in Bucuresti, Cluj-Napoca, Timisoara, Iasi si toata Romania, inclusiv meditatii online. Publica sau gaseste anunturi meditatii gratuit, programeaza ore online cu profesori verificati, cauta un profesor particular sau incepe meditatii BAC si admiterea la facultate.

© 2026 MeditatiiDirect. Toate drepturile rezervate.