루트 트리를 효율적으로 해시하는 방법에는 여러 가지가 있습니다.
이러한 방법 중 하나는 다음과 같이 구성됩니다.
깊이 순회 순서대로 정점을 재귀적으로 처리합니다. 단일 정점의 해시가 p와 같다고 가정합니다. 자식이 있는 정점의 경우 먼저 알고리즘을 실행한 다음 자식을 통해 현재 하위 트리의 해시를 계산합니다. 이렇게 하려면 자식 하위 트리의 해시를 숫자 시퀀스로 간주하고 이 시퀀스에서 해시를 계산합니다. 이것은 현재 하위 트리의 해시가 됩니다.
하위 항목의 순서가 중요하지 않은 경우 해시를 계산하기 전에 하위 하위 트리에서 해시 시퀀스를 정렬한 다음 정렬된 시퀀스에서 해시를 계산합니다.
이렇게 하면 트리의 동형을 확인할 수 있습니다. 자식에 대한 순서 없이 해시를 계산합니다(즉, 자식의 해시를 정렬할 때마다). 그리고 루트의 해시가 일치하면 트리는 동형이고 그렇지 않으면 그렇지 않습니다.
루트가 없는 트리의 경우 모든 것이 비슷한 방식으로 발생하지만 중심을 루트로 가져와야 합니다. 또는 두 개의 중심이 있는 경우 한 쌍의 해시를 고려하십시오.