我正在oiwiki上自学平衡树 然后看到删除部分
有一点看不懂这个代码
int deletemin(int& o) {
if (!lc[o]) {
int u = o;
o = rc[o];
return u;
} else {
int u = deletemin(lc[o]);
siz[o] -= cnt[u];
return u;
}
}
void del(int& o, int v) {
siz[o]--;
if (val[o] == v) {
if (cnt[o] > 1) {
cnt[o]--;
return;
}
if (lc[o] && rc[o]) o = deletemin(rc[o]);
else
o = lc[o] + rc[o];
return;
}
if (val[o] > v) del(lc[o], v);
if (val[o] < v) del(rc[o], v);
}
有看算法介绍但是还是不理解(lc[o] && rc[o]) o 是什么意思 然后也不理解为什么要 o = lc[o] + rc[o];