pRBT at_norecur(pRBT root,int i)
{
if(root==nil)
return nil;
pRBT x=root;
int r;
while(x!=nil)
{
r=x->left->size+1;
if(r==i)
return x;
else if(i<r)
x=x->left;
else
{
i-=r;
x=x->right;
}
}
return x;
}
pRBT at_norecur(pRBT root,int i)
{
if(root==nil)
return nil;
pRBT x=root;
int r;
while(x!=nil)
{
r=x->left->size+1;
if(r==i)
return x;
else if(i<r)
x=x->left;
else
{
i-=r;
x=x->right;
}
}
return x;
}