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