Я работаю над проблемой алгоритма. Учитывая n, сгенерируйте все структурно уникальные двоичные деревья поиска, которые сохраняют значения 1 ... n. Решение состояло в том, чтобы перечислить каждое число i в последовательности и использовать число в качестве корня, подпоследовательность 1 ... (i-1) с левой стороны будет лежать на левой ветви корня и аналогично правая подпоследовательность (i +1) ... n лежит на правой ветви корня. Затем постройте поддерево из подпоследовательности рекурсивно. Такой подход гарантирует, что построенные BST все уникальны, поскольку они имеют уникальные корни.построить уникальное дерево двоичного поиска
Теперь мой вопрос: что, если деревья не ограничены двоичными деревьями поиска, если это может быть любое двоичное дерево. Как было бы решение? Я бы все же хотел рассмотреть все случаи с корнем i, где i = 1, ... n. Левое поддерево не должно находиться в диапазоне 1 ... (i-1), правое поддерево не должно находиться в диапазоне (i + 1) ... n. Но тогда как их устроить? Создать произвольное подмножество элементов (i-1) и применить?
Создание двоичного дерева поиска (или нет) не влияет на структуры, возможные в трех, а только на порядок данных в узлах этой структуры. Таким образом, если вы не определяете «структурно уникальную» каким-то довольно странным образом, не имеет значения, упорядочены ли узлы как BST или нет. –