10分
int merge(int l,int r,int rtl,int rtr)
{
if(l==r)
{
siz[rtl]+=siz[rtr];
return rtl;
}
if(!rtl||!rtr)
return rtl+rtr;
//...
}
100分
int merge(int l,int r,int rtl,int rtr)
{
if(!rtl||!rtr)
return rtl+rtr;
if(l==r)
{
siz[rtl]+=siz[rtr];
return rtl;
}
//...
}
如果把l==r
写在上面,有可能改变0节点的siz,从而使所有空节点都有大小,爆炸了。