树哈希
Posted at 19-2-26 20:46, Updated at 20-2-12 11:56
用来判断两棵有根树是否同构,很简单,稍微记录一下细节(贴个代码)
我会告诉你这篇博客其实是用来测试一下自己瞎折腾的新主题的吗
Brief Introduction
大致Hash的思路与普通字符串Hash类似,需要注意的点:
- 树Hash需要两个不同的
Base
和一个Rest
来进行Hash(具体见代码),即先对子树用Base1
Hash起来后,对这个Hash值用Base2
和Rest
进行Hash - 求出儿子的Hash值后需要将它们排序再计算
- 具体Hash策略可以模意义下普通Hash,也可以直接异或
- 此外,如果需要判断无根树是否同构的话,可以把重心作为根进行Hash
Code
1 | const int Base1 = 20030123, Base2 = 20030618, Rest = 19260817; |