Pagini recente » Monitorul de evaluare | Cod sursa (job #1639145) | Cod sursa (job #1223828) | Cod sursa (job #3237331) | Cod sursa (job #554090)
Cod sursa(job #554090)
#include <iostream>
#include<stdio.h>
#define DIM (1<<17)
using namespace std;
typedef struct nod
{
int inf,ind;
nod *st,*dr;
}*ARB;
ARB r; // r- radacina arborelui
int v[DIM],n,m,
T[DIM],P[DIM],k;
void update(ARB &, int,int );
void supprimer(ARB &,int);
void read()
{
scanf("%d",&n);
r = 0;
for( int i=1; i<=n; i++ )
{
scanf("%d",&v[i]);
update(r,v[i],i);
}
}
void update(ARB &t, int x , int ii )
{
if( t==0 )
{
t = new nod;
t->inf = x; t->ind = ii;
t->st = t->dr = 0;
}
else
if( t->inf<=x )
update(t->dr,x,ii);
else update(t->st,x,ii);
}
void supprimer( ARB &t, int x )
{
if( t->inf<x ) supprimer(t->dr,x);
if( t->inf>x ) supprimer(t->dr,x);
if( t->inf==x)
{
// 3 cazuri
}
}
void SRD(ARB a)
{
if(a)
{
SRD(a->st);
P[k++] = a->ind;
cout<<a->inf<<" ";
SRD(a->dr);
}
}
int main()
{
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
read();
SRD(r);cout<<endl;
int i=0;
while(i<n) printf("%d ",P[i++]);
return 0;
}