我之前在模拟赛上时有一题用二叉树哈希做,区分点权和结构,然后自己口胡了一个式子,过了学校OJ和洛谷的数据,但那题老师说暴力可以卡过去所以没有讲树哈希的做法。
这种树哈希判结构和点权的方法应该可以拓展到多叉树,但我不知道正确性。
siz[u] 表示以 u 为根的子树大小,w[u] 表示 u 的点权,ls 表示 u 的左二子,rs 表示 u 的右儿子,f[u] 为以 u 为根的子树的哈希结果,g[u] 为一个辅助数组,seed 为区分层级的哈希质数,Seed 为区分左右儿子的哈希质数。
g[u]=(g[ls]×seed+f[ls])+(g[rs]×seed+f[rs])×Seed
f[u]=siz[u]×(g[u]+w[u])
求助这种哈希的正确性。