Pagini recente » Cod sursa (job #2141024) | Cod sursa (job #468860) | Cod sursa (job #1735332) | Cod sursa (job #536686) | Cod sursa (job #1218363)
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct lista
{
int nr;
lista * s;
lista * d;
} *arb;
arb v,man;
int k,i,j,n;
int creare(arb &c , int k)
{
if (c!=NULL)
{
if (c->nr==k) return 1;
else
if (c->nr<k) creare(c->d,k);
else
if (c->nr>k) creare(c->s,k);
}
else
{
c=new lista;
c->s=NULL;
c->d=NULL;
c->nr=k;
}
}
bool cautare(arb &c, int k)
{
if (c!=NULL)
{
if (c->nr==k) return 1;
else
if (c->nr<k) cautare(c->d,k);
else
if (c->nr>k) cautare(c->s,k);
}
else return 0;
}
void cmmd(arb &c, arb &f)
{
if (f->d!=NULL)
{
cmmd(c,f->d);
}
else
{
c->nr=f->nr;
man=f;
f=f->s;
delete man;
}
}
void sterg(arb &c , int k)
{
arb f;
if (c!=NULL)
{
if (c->nr==k)
{
if ((c->s==NULL)&(c->d==NULL))
{
delete c;
c=NULL;
}
else
if (c->s==NULL)
{
f=c->d;
delete c;
c=f;
}
else
if (c->d==NULL)
{
f=c->s;
delete c;
c=f;
}
else cmmd(c,c->s);
}
else
if (c->nr<k) sterg(c->d,k);
else sterg(c->s,k);
}
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d\n",&n);
int op;
for (i=1 ; i<=n; ++i)
{
scanf("%d%d",&op,&k);
if (op==1)
{
creare(v,k);
}
if (op==2)
{
sterg(v,k);
}
if (op==3)
{
if (cautare(v,k)==1) printf("%d\n",1);
else printf("%d\n",0);
}
}
return 0;
}