还有几种方法可以有效地散列有根树。
其中一种方法安排如下:
我们按照深度遍历的顺序递归地处理顶点。我们假设单个顶点的哈希值等于 p。对于有孩子的顶点,我们首先为他们运行算法,然后通过孩子我们将计算当前子树的散列。为此,将子树的哈希值视为一个数字序列,并根据该序列计算哈希值。这将是当前子树的散列。
如果孩子的顺序对我们不重要,那么在计算哈希之前,我们从孩子子树中排序哈希序列,然后从排序后的序列计算哈希。
通过这种方式,您可以检查树的同构性 - 只需计算哈希而不对孩子排序(即,每次对孩子的哈希进行排序)。如果根的哈希匹配,则树是同构的,否则不是。
对于无根树,一切都以类似的方式发生,但质心必须作为根。或者,如果有两个质心,则考虑一对哈希。