Представьте полное двоичное дерево, где узлы на каждом уровне глубины пронумерованы слева направо.Функция сравнения для упорядочения DFS произвольного дерева
- Узел 1 имеет детей 2 и 3.
- Узел 2 имеет детей 4 и 5.
- Узел 3 имеет детей 6 и 7.
т.д.
на глубине D будут 2^D узлы с номерами 2^D ... 2^(D + 1) -1
Обход поиска по глубине для полного дерева любой глубины детерминированный.
Например, дерево глубины 4 всегда будет проходить: 1,2,4,8,9,5,10,11,3,6,12,13,7,14,15.
Я ищу способ сортировки списка чисел, где они будут попадать в обход DFS любого дерева.
В частности, мне нужна функция сравнения, которая может принимать два номера и определять, что на первом месте происходит при обходе DFS.
Любые идеи?
Предварительно вычисление обхода DFS для некоторого максимального размера дерева является одним из способов сделать это, но я бы предпочел математическое решение, которое не требует вычислений и хранения этой информации.
Есть некоторые термины, которые вы можете использовать вместо того, что вы написали: «идеальное дерево» -> «полное двоичное дерево», «обход .. постоянный» -> «обход .. детерминирован» – justhalf
Спасибо , Я обновил вопрос. – logworthy