|
|
|
| хотел бы узнать... на человеческом языке! =) | |
|
|
|
|
 15.6 Кб |
|
|
для: KEPZ
(21.06.2007 в 20:59)
| | Бинарные деревья позволяют легко искать данные - в отличие от массивов и других структур - элементы в них, зачастую, автоматически отсортированы. Т.е. добавляете новый элемент, а коллекция всё равно автоматически отсортированной остаётся (сравните с массивами, где нужно усилия прикладывать для сортировки - тут на это не тратится вообще никаких усилий).
Во вложении представлено бинарное дерево, которое хранит значения от 1 до 13. При этом слева от любого узла значения меньше, чем справа. Возьмите любое число и справа от него во всём дереве будут меньшие значения, а слева большие. Поэтому для поиска элемента со значением 11 не нужно перебирать все элементы коллекции (а 11 может оказаться в последнем элементе и придётся просканировать всё) - достаточно идти с вершины коллекции (8) сравнивая искомое значение с поподающими по дороге и уже на втором шаге мы достигнем искомого узла.
PS Именно так устроены индексы у баз данных (а зачастую и сами данные там могут строиться). | |
|
|
|
|
|
|
|
для: cheops
(22.06.2007 в 11:54)
| | Благодарю, уважаемый! А реально работающий пример для наглядности у вас не найдётся?
И почему именно справа больше, а слева меньше? Это особое правило? | |
|
|
|
|
|
|
|
для: KEPZ
(22.06.2007 в 14:12)
| | >А реально работающий пример для наглядности у вас не найдётся?
Индексы в СУБД MySQL. Дело в том, что на PHP такие конструкции редко применяются - чаще бинарные деревья используются там, где имеются указатели и ссылки (C, C++).
>И почему именно справа больше, а слева меньше? Это особое правило?
Нет не обязательно и критерий сортировки в бинарном дереве может быть не обязательно больше или меньше - здесь числа и отношение больше и равно используется для наглядности. Суть любого бинарного дерева в том, что поиск по нему осущетвляется быстрее, чем в последовательной коллекции. | |
|
|
|
|
|
|
|
для: cheops
(22.06.2007 в 14:56)
| | Большое спасибо за разъяснения! :) | |
|
|
|