标签:http 版本 复杂 空间复杂度 ret math img build span
每次进行单点修改后,会新增\(log\ n\)个新节点,即每次更改的结点数为树的高度
增加的非叶子结点一个儿子是其他版本的节点,另一个儿子是连向新节点
空间复杂度为\(O(n+m\ log\ n)\)
\(code\):
void build(int L,int R,int &cur)
{
cur=++tree_cnt;
if(L==R)
{
val[cur]=a[L];
return;
}
int mid=(L+R)>>1;
build(L,mid,ls[cur]);
build(mid+1,R,rs[cur]);
}
void modify(int L,int R,int pos,int v,int pre,int &cur)
{
cur=++tree_cnt;
ls[cur]=ls[pre],rs[cur]=rs[pre];
val[cur]=val[pre];
if(L==R)
{
val[cur]=v;
return;
}
int mid=(L+R)>>1;
if(pos<=mid) modify(L,mid,pos,v,ls[pre],ls[cur]);
if(pos>mid) modify(mid+1,R,pos,v,rs[pre],rs[cur]);
}
int query(int L,int R,int pos,int cur)
{
if(L==R) return val[cur];
int mid=(L+R)>>1;
if(pos<=mid) return query(L,mid,pos,ls[cur]);
if(pos>mid) return query(mid+1,R,pos,rs[cur]);
}
标签:http 版本 复杂 空间复杂度 ret math img build span
原文地址:https://www.cnblogs.com/lhm-/p/12229512.html