根据 序对树的节点进行差分操作
复杂度实现某个点权集合或边权集合加一个值
复杂度求出所有的点权 / 边权

前缀和

void get(int u, int f){
	for(auto v : G[u]){
		if(v == f) conitnue;
		get(v, u);
		d[u] += d[v];
	}
}

树上差分

树上差分分为点差分和边差分,通常结合树基础和最近公共祖先来出问题

点差分

代表 到 点的最短路径上的点的权值之和
表示 点 到 总树的根节点的路径上的权值之和

(a, b) = s[a] + s[y] - s[lca(x, y)] - s[f[lca(x, y)]];

边差分

其实和点差分差不多

(a, b) = s[a] + s[b] - 2 * s[lca(a, b)];