Cod sursa(job #1290716)

Utilizator YusukeFMI Mares Medar Razvan Yusuke Data 11 decembrie 2014 18:22:27
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.67 kb
#include<iostream>
using namespace std;
struct nod{
    int cheie;
    nod *st,*dr;
   } *t;
int n,k,maxim=0;
void insert(nod *&c,int k){
    if(c)
        if(k>c->cheie)
            insert(c->dr,k);
        else
            if(k<c->cheie)
                insert(c->st,k);
            else
                cout<<"Cheia exista deja";
    else{
        c=new nod;
        c->cheie=k;
        c->st=c->dr=0;
        }

}
int search(nod *c,int k){
    if(c){
            if(k>c->cheie)
                return search(c->dr,k);
            else
                if(k<c->cheie)
                    return search(c->st,k);
                else
                    return 1;
            return 0;
    }
}
void findMax(nod *c,int &maxim){
    if(c){
        maxim=c->cheie;
        findMax(c->dr,maxim);
    }
}
void RSD(nod *c){
    if(c){
        cout<<c->cheie<<" ";
        RSD(c->st);
        RSD(c->dr);
    }
}
void stergere(nod *c,int k){
    if(c){
            if(k>c->cheie)
                stergere(c->dr,k);
            else
                if(k<c->cheie)
                    stergere(c->st,k);
                else{

                }
    }
}
void meniu(){
    int q=1;
    int x;
    while(q==1){
        cout<<"Alegeti optiunea:\n";
        cout<<"a)insert(t,x)\n";
        cout<<"b)search(t,x)\n";
        cout<<"c)findMax(t)\n";
        cout<<"d)delete(t,x)\n";
        cout<<"0)Iesire.\n";
        cout<<"Optiunea:";
        char opt;
        cin>>opt;
        switch(opt){
            case 'a':
                cout<<"Introduceti cheia nodului de inserat:";
                cin>>x;
                insert(t,x);
                RSD(t);
                break;
            case 'b':
                cout<<"Introduceti cheia nodului pe care il cautati:";
                cin>>x;
                if(search(t,x)==1)
                    cout<<"S-a gasit cheia.\n";
                else
                    cout<<"Nu s-a gasit cheia.\n";
                break;
            case 'c':
                cout<<"Maximul este:";
                findMax(t,maxim);
                cout<<maxim<<'\n';
                break;
            case 'd':
                cout<<"Introduceti cheia nodului pe care doriti sa-l stergeti:";
                cin>>x;
                if(search(t,x)==1)
                    delete1(t,x);
                else
                    cout<<"Esti cu capu...";
                break;
            case '0':
                q=0;
                break;
            default:
                cout<<"Valoare incorecta,reincercati.\n";
                break;
        }

    }
}
int main(){//v=0;
    meniu();
}