Сортировка двоичного (бинарного) дерева

124
21 октября 2021, 23:50

Хочу написать двоичное дерево для хранения строк. Как упрощенная задача - нужно отсортировать дерево на одном уровне. Т.е. просто отсортировать по одному символу буквы.

Допустим есть дерево

struct Node {
   Node * left; 
   Node * right;
   char c;
 }

Какие существую варианты балансировки (упорядочивания дерева). Выходит что должен существовать медленный вариант и быстрый но не очень качественный?

Я вижу следующий алгоритм. 1. Создаем линейный массив, методом вставки упорядочиваем его, обходя все дерево. (тут т.к. извесно что елементов будет не более 256, то массив можно заранее создать в стеке) 2. Делим массив пополам, посередине корень, узел слева-посередине(1/4) - левый елемент, узел справа-посередине(3/4) - правый елемент, для деток повторяем деление (можно рекурсией).

Какие существую варианты балансировки деревьев желательно с оценкой затратности алгоритма, может есть ссылка где всё до кучи собрано?

READ ALSO
Segmentation fault. Найти строку, содержащую запись самого большого целого числа в десятичной системе

Segmentation fault. Найти строку, содержащую запись самого большого целого числа в десятичной системе

В коде много "странностей", но основная ошибка в том, что в функции поиска вы почему-то обращаетесь к text[column]Это, разумеется, совершенно не правильно

122
Call of overloaded is ambiguous при реализации своего алгоритма copy

Call of overloaded is ambiguous при реализации своего алгоритма copy

Есть самописное подобие stlСуть задачи - вектор пар (тоже самописные)

224
C++ Считалка. Проблема с зацикливанием

C++ Считалка. Проблема с зацикливанием

Пишу код под задачу со считалкой в строке и одномерным массивом с людьмиЧерез поток делю строку на слова и через while выполняю считалку один...

264
Полиморфизм и указатели на функции

Полиморфизм и указатели на функции

Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?

91