Я читаю об осуществлении индекса с использованием таблиц символов в книге автора Роберт Седвик в «Алгоритмах на C++».реализация индекса двоичного дерева дерева с использованием таблиц символов
Ниже фрагмент из книги
Мы можем адаптировать бинарные деревья поиска для построения индексов в точно же образом, как мы обеспечили косвенность для сортировки и куч. Упорядочить ключи, которые нужно извлечь из элементов с помощью ключевого элемента Функция, как обычно. Более того, мы можем использовать параллельные массивы для ссылок , как это было сделано для связанных списков. Мы используем три массива, по одному для элементов, левых ссылок и правильных ссылок. Ссылки являются индексы массива (целые числа), и заменить ссылки на ссылку, такие как
х = х> л
во всем коде со ссылками массивов, таких как
х = л [х] ,
Такой подход позволяет избежать затрат динамического распределения памяти для каждого узлов-элементов занимают массив без учета функции поиска и мы предварительно выделить два целых числа в каждой позиции, чтобы держать дерево связей, признание того, что мы будем нуждаться по крайней мере, это количество места, когда все элементы находятся в структуре поиска. Пространство для ссылок не всегда используется, но оно предназначено для использования поисковой программой без в любой момент времени для распределения. Еще одна важная особенность этого подхода заключается в том, что он позволяет добавлять дополнительные массивы (дополнительная информация, связанная с с каждым узлом), без изменения кода обработки дерева, который вообще изменился. Когда процедура поиска возвращает индекс для элемента, дает способ немедленно получить всю связанную с ним информацию с помощью этого индекса, используя индекс для доступа к соответствующему массиву.
Этот способ реализации BSTs, чтобы помочь в поиске больших массивов из элементов иногда полезно, потому что позволяет избежать дополнительных расходов на копирование элементов во внутреннее представление ADT, и накладных расходов распределения и строительство по новым , Использование массивов не подходит, если пространство стоит на высоте, а таблица символов растет и заметно уменьшается, особенно если трудно оценить максимальный размер таблицы символов до . Если нет точного размера прогноз возможно, неиспользованные ссылки могут занимать место в пробе массив.
Моих вопросов по данному тексту являются
Что автор подразумевает под «мы можем использовать параллельные массивы ссылок, как мы это делали для связанных списков»? Что означает эта статута и что такое параллельные массивы.
Что означает ссылка автора, являются индексами массива, и мы заменяем ссылки, такие как x = x-> l с x = l [x]?
Что автор подразумевает под «Другой важной особенностью этого подхода является то, что он позволяет добавлять дополнительные массивы (дополнительную информацию, связанную с каждым узлом) без изменения кода древовидной манипуляции». ?
Использование 'станд :: map' из STL. Если возможно, используйте компилятор C++ 11. –
@Basile, что может сделать для наличия структур данных, которые вы просто хотите использовать _use._, но вряд ли это будет полезно, если вы намерены понять, как на самом деле структуры данных _work_ :-) – paxdiablo
Читайте также wikipages [Дерево двоичного поиска] (http://en.wikipedia.org/wiki/Binary_search_tree), [Самобалансированное дерево двоичного поиска] (http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree), [Красно-черное дерево] (http: //en.wikipedia.org/wiki/Red-black_tree), [AVL tree] (http://en.wikipedia.org/wiki/AVL_tree) и т. д. –