Мы всегда видим, что операции с деревом (двоичного поиска) имеют наихудшее время работы O (logn) из-за высоты дерева logn. Интересно, скажем ли нам, что алгоритм имеет время работы как функцию logn, например m + nlogn, можем ли мы заключить, что оно должно включать (дополненное) дерево?Является ли O (logn) всегда деревом?
EDIT: Благодаря вашим комментариям, я понимаю, что divide-conquer и binary tree настолько похожи визуально/концептуально. Я никогда не связывал связь между ними. Но я думаю о случае, когда O (logn) не является алговым словом, в котором есть дерево, которое не имеет свойства дерева BST/AVL/красно-черного.
Это структура данных непересекающихся множеств с операциями Find/Union, чье время работы O (N + MlogN), причем N - это число элементов, а M - количество операций поиска.
Пожалуйста, дайте мне знать, если я пропущу sth, но я не вижу, как вступает в игру развод. Я просто вижу в этом (непересекающемся множестве) случай, что у него есть дерево без свойства BST, а время выполнения - функция logN. Поэтому мой вопрос в том, почему/почему я не могу сделать обобщение из этого случая.
Только сбалансированное дерево - это высота lgn. Совершенно возможно выполнять операции над деревьями, которые приводят к высотам, приближающимся к N вместо lgn. (например, вставка отсортированного массива в дерево без балансировки.) – KitsuneYMG
Осторожно по математике. 'm + nlogn' не' O (log n) ', это' O (n log n) '. – Potatoswatter
Согласен. Когда я столкнулся с вопросом, я думал о AVL/красно-черном дереве и лесных сетях. – Martin08