1. 程式人生 > >可並堆總結

可並堆總結

左偏樹

int mer(int x,int y){
    if(x==0||y==0) return x+y;
    if(lt[x].val>lt[y].val) swap(x,y);
    rc=mer(rc,y);
    if(lt[lc].dis<lt[rc].dis) swap(lc,rc);
    lt[x].dis=lt[rc].dis+1;
    return x;
}

斜堆

int mer(int x,int y){
    if(x==0||y==0) return x+y;
    if(lt[x].val>lt[y].val) swap(x,y);
    rc=mer(rc,y);
    swap(lc,rc);
    return x;
}