Documente Academic
Documente Profesional
Documente Cultură
Algoritmi Arbori Binari
Algoritmi Arbori Binari
#include <iostream>
struct nod
{int val;
nod *st,*dr;
};
nod *v;
int n,k;
///declaram o structura de tip nod
{aux=v->dr;
delete v;
v=aux;}
else
if(v->dr==0)
{aux=v->st;
delete v;
v=aux;}
else
cmd(v,v->st); ///are ambii subarbori stang si drept
///apelam o stergere mai speciala pt nodul v si adresa de
stanga a acestuia
}
else
if(v->val<k)
sterg(v->dr,k); ///daca valoarea e mai mare decat ce se afla in v
mergem pe ramura dreapta
else
sterg(v->st,k); ///daca valoarea e mai mare decat ce se afla in v
mergem pe ramura stanga
else
cout<<"valoarea de sters nu se gaseste in arbore ";
}
int main()
{
cin>>n;
int i;
for(i=1;i<=n;i++)
{///inseram valorile din din arborele de cautare...il construim pas cu pas
cin>>k;
inserare(v,k);}
///afisam valorile din arbore in ordine crescatoare
srd(v);
///citim o valoare pt care sa facem cautare
cout<<endl<<"valoarea de cautat ";
cin>>k;
if(cautare(v,k))
cout<<"este!";
else
cout<<"nu este!";
///citim o valoare pe care sa o stergem
cout<<endl<<"valoarea de sters ";
cin>>k;
sterg(v,k);
///afisam din nou in ordine crecatoare componentele ramase
cout<<"arborele contine dupa stergere urmatoarele noduri\n ";
srd(v);
return 0;