Есть 2 свойства, которые вы хотите проверить:
- Каждый узел посетил ровно один
- Обход - это глубина сначала
Первое легкодля проверки: количество посещенных уникальных узлов должно быть равно количеству узлов в дереве.Можно проверить это на любом случайном дереве.
Второе немного сложнее - выражение в общем случае, вероятно, более сложное, чем проверенный код.Проще всего выбрать некоторые репрезентативные ограничения, основанные на конкретных известных данных, то есть
- B должно быть после A
- E должно быть сразу после B
- ...
Трудно представить реалистичный код, который удовлетворяет первому свойству для всех деревьев, но может не дать второго только в определенных случаях.Так что за пределами самых формальных систем, критически важных для безопасности (и вообще, что они делают с использованием динамических структур данных?), Этого будет достаточно.