Это может быть очень наивно, но мне было интересно, это контекст бинарных деревьев (простые, отсортированные и сбалансированные) всех типов обхода:
- предварительный заказ в глубину
- в порядке глубины
- первый заказ на глубину
- в ширину
Какова реальная полезность до и после заказа? Я имею в виду, есть ли какой-то тип и / или конфигурация бинарного дерева, в котором обход до и / или после заказа даст (некоторые) преимущество (преимущества) над двумя другими?
AFAICS, существуют определенные типы и конфигурации бинарных деревьев, для которых порядок и ширина могут дать определенное преимущество:
для сбалансированного двоичного дерева любой обход в глубину будет использовать меньше места для хранения памяти по сравнению с шириной вначале (например, для сбалансированного двоичного дерева из 6 или 7 узлов высота равна 2, поэтому при любом обходе в глубину необходимо хранить максимум 2 узла в любой момент времени, в то время как последний уровень имеет 3 или 4 узла, поэтому обход в ширину должен хранить до 3 или 4 узлов в некоторой точке). В этом случае использование обхода по порядку использует наименьшее количество памяти и посещает узлы в их естественном порядке.
для несбалансированного двоичного дерева, если оно близко к сценарию вставки в наихудшем случае, при обходе его в ширину потребовалось бы меньше памяти по сравнению с любым обходом в глубину. Так что в этом случае ширина в первую очередь дает преимущество. Обратный путь по порядку имеет еще одно преимущество - посещение значений в их естественном порядке.
Однако я не могу придумать ситуацию, в которой пре и посттраверсальный переход давали бы преимущество перед двумя другими.