用指针写动态开点线段树用完后怎样初始化可以释放已使用的内存?代码如下
struct node{
node*ls;node*rs;
int l,r,data;
void pushup(){
data=0;
if(ls!=NULL) data+=ls->data;
if(rs!=NULL) data+=rs->data;
}
void update(int x,int v){
if(l>x||r<x) return;
if(l==r){data+=v;return;}
int mid=(l+r)>>1;
if(x<=mid){
if(ls==NULL){ls=new node;*ls={NULL,NULL,l,mid,0};};
ls->update(x,v);
}
else{
if(rs==NULL){rs=new node;*rs={NULL,NULL,mid+1,r,0};};
rs->update(x,v);
}
pushup();
}
int query(int x){
if(x>r||x<l) return 0;
if(l==r) return data;
int mid=(l+r)>>1;
if(mid>=x){
return ls==NULL?0:ls->query(x);
}
else return rs==NULL?0:rs->query(x);
}
};