1) В чем разница между AVL деревьев и расширяющихся деревьев?
Они сходны по структуре и операций, которые мы называем их. Разница заключается в том, что в расширяющихся деревьев, после каждой операции, мы пытаемся сохранить дерево почти идеально сбалансирован так, что будущие операции занимают меньше времени.
2) На каком основании мы выбираем этот локон?
Расширяющиеся дерева всегда лучше, чем бинарные дерева поиска, когда ваше приложение имеет дело с большим количеством данных в дереве, но будет иметь доступ к подмножеству данных очень часто, чем другие. В этом случае данные, которые вы доступ к часто будет приближаться к корню в результате Splay. Кроме того, любой узел может затем быть доступен с меньшими затратами времени, чем раньше.
Как правило, для выбора этих дерев, если вам нужно «Average» журнала (п) в течение периода операций дерева затем использовать расставленное дерево. Binary дерево не может этого гарантировать.
3) Каковы положительные и отрицательные-х-х этих деревьев?
Положительные для обоего является то, что вы получаете вокруг журнала (N) в обеих этих структурах данных теоретически.
Как упоминалось расширяющееся дерево имеют средний журнал (п) на протяжении ряда операций. Это означает, что, может быть, вы получили н трудоемкость на операцию по крайней мере один раз в этом наборе. Но это будет компенсировано при доступе к часто пунктов.
Отрицательная бинарного дерева поиска является то, что вам нужно быть счастливым, чтобы иметь журнал (п) всегда. Если ключи не являются случайными, то дерево будет свести к списку как формы только с одной стороны.
4) Каковы характеристики этих деревьев в условиях большого нотации O?
Splay дерево Log (п) в среднем по группе операций дерева. Binary дерево Log (п) только тогда, когда ваши ключи собираются в случайном порядке.
Результаты по времени выполнения очевидны здесь скошенное дерево выполнения профилирования
Вы можете увидеть разницу во время выполнения в поиске и без splaying.