This document describes an algorithm for determining if two trees are isomorphic by hashing the trees. It involves recursively hashing all subtrees, sorting the hashes to ensure uniqueness, and then hashing the overall tree. The time complexity is O(NlogN) where N is the number of vertices. Pseudocode and a C++ implementation are provided. The document also discusses representing trees structurally and handling unrooted trees by trying all possible roots.