用指针写动态开点线段树怎么清内存
  • 板块灌水区
  • 楼主xyz123
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/9/11 21:43
  • 上次更新2024/9/12 13:35:52
查看原帖
用指针写动态开点线段树怎么清内存
379926
xyz123楼主2024/9/11 21:43

用指针写动态开点线段树用完后怎样初始化可以释放已使用的内存?代码如下

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);
	}
};
2024/9/11 21:43
加载中...