Sie sind auf Seite 1von 3

int i, n, st[50], dr[50]; void citire() {ifstream f("date.

in"); f>>n; for (i=1; i<=n; i++) f>>st[i]; for (i=1; i<=n; i++) f>>dr[i]; } void SRD(int nod) {if (nod) {SRD(st[nod]); cout<<nod; SRD(dr[nod]); //R=pozitia lui cout } } int main() {citire(); cout<<"dati rad"; cin>>r; SRD(r); return 0; }

struct nod {int inf; nod *st, *dr; }*rad; void citire() { ... } nod *arbore(int nod) {if (nod) {nod *p=new nod; p->inf=nod; p->st=arbore(st[nod]); p->dr=arbore(dr[nod]); return p; } else return 0; } void SRD_D(nod *p) {if (p) {SRD_D(p->st); cout<<p->inf<<" "; SRD_D(p->dr); //R=poz lui cout } } int main() {citire(); cout<<"dati eticheta rad"; cin>>r; nod *rad=arbore(r); cout<<"parcurg in inord este";

SRD_D(r); cout<<"\n parcurg in preord este"; RSD_D(r); cout<<"\n parcurgerea in postord este"; SDR_D(r); return 0; }

void inserare(nod *&rad, int eticheta) {if (rad) if (rad->inf==eticheta) cout<<"eticheta exista in arb"; else if (rad->inf<eticheta) inserare (rad->dr, eticheta) else inserare (rad->st, eticheta) else {rad=new nod; rad->inf=eticheta; rad->st=0; rad->dr=0; } } int main() {rad=0; cout<<"dati nr de etichete"; cin>>n; for (i=1; i<=n; i++) {cout<<"dati eticheta"; cin>>eticheta; inserare(rad, eticheta); } SRD(rad); return 0; }

int caut(nod *p, int x) {if (p) if (p->inf==x) return 1; else if (x>p->inf) return caut(p->dr, x); else return caut(p->st, x); else return 0; } void caut(nod *p, nod *&adr, int x) {if (p) if (p->inf==x) adr=p; else if (x>p->inf)

caut(p->dr, adr x) else caut(p->st,adr x) else adr=0; }

void sterg(nod *&c, int k) {nod*f; if (c) if (c->inf==k) if (c->st==0 && c->dr==0) {delete c; c=0; } else if (c->dr==0) {f=c->st; delete c; c=f; } else if (c->st==0) {f=c->dr; delete c; c=f; } else cmmd(c, c->st); else if (c->inf>k) sterge(c->st, k) else sterge(c->dr, k) else cout<<"nu exista"; } void cmmd(nod, *&c, nod*&f) {nod *p; if (f->adr!=0) cmmd(c, f->dr); else {c->inf=f->inf; p=f; f=f->st; delete p; } }

Das könnte Ihnen auch gefallen