树哈希
参考:
树哈希(Tree Hash)哔哩哔哩koko
无权树
哈希函数设计
设hs[x]表示以x为根的子树的哈希值
其中y是x的儿子,是以y为根的子树的大小,prime[i]是第i个质数
其实这个函数就跟子树大小有关,那么这样的hash函数有个好处是可以换根
dfs一遍之后,我们只能得到一个根上的哈希值(只有hs[1]代表的是整颗树的hash值)
但是经常有题目要计算每个点为根的hash值(特别是无根树)
换根hs[x]->hs[y],y是x的子节点
int vx=hs[x]-hs[y]*prime[siz[y]];
hs[y]+=vx*prime[n-siz[y]];
有权树