Выполняю обход классического бинарного дерева по ширине. Для этого использую алгоритм обхода в ширину посредством очереди.
Алгоритм на псевдоязыке
Код: Выделить всё
procedure startTreeWidth
{
core = Tree.core; //получили корневой элемент дерева
Query.add(core); // добавили элемент в очередь
while(!Query.empty()) //крутим цикл пока в очереди есть элементы
{
current = Query.get();//берем из очереди
print(current->value);//выводим на экран текущий
if(currect->left != NULL){
Query.add(current->left); //добавляем в очередь левый элемент
if(current->right != NULL){
Query.add(current->right); // добавляем в очередь правый элемент
}
}
Классический вариант обхода по ширине, который обходит дерево, как на верхней части картинки. Нужно как-то подкорректировать алгоритм, чтобы обход был, как на нижней части картинки. Голову ломаю, ничего не приходит. У кого какие мысли могут быть на этот счет?
Ну да ладно.