Предположим, что вы можете выбрать символ Unicode, который никогда не разрешен в метке узла.
Затем вы можете использовать классы потокового API (например, Java MessageDigest) для подачи всех меток в древовидном порядке, вставляя зарезервированный символ-разделитель между ними.
В конце у вас есть один сравнительно компактный дайджест, не оплачивая дополнительный уровень расчетов SHA.
EDIT
Схема, приведенная выше, не совсем верна, но, опять же, это не оригинальный вопрос, поскольку он не кодирует структуру дерева. Код должен создать своего рода идентификатор для каждого узла, который является более сильным, чем просто порядок обхода, и включить его в хэш-ввод для узла, чтобы деревья с различными формами, но одинаковыми метками не идентифицировали одинаково
Исходная схема в ответе работает, если важен порядок деревьев, но нет точной структуры.