Base/Knowledges/IT/Структуры данных/Косые деревья (Splay tree).md
2026-02-23 19:52:05 +03:00

1.9 KiB
Raw Blame History

#структураанных #todo

Косые деревья представляют другой подход к сбалансированным деревьям BST. Их свойство в том, что если вы недавно искали какой-то элемент, то следующий его поиск будет быстрее

Когда вы ищете узел в косом дереве, он становится новым корнем, так что при повторном поиске он будет найден сразу же. В общем случае узлы, которые вы недавно искали, группируются в начале и находятся быстрее. С другой стороны, дерево заведомо не будет сбалансировано, а значит, некоторые операции поиска будут занимать время, большее O(log(n)), и даже достигать линейного времени! Кроме того, при выполнении поиска вам, возможно, придется повернуть узел до корневой позиции, если он еще не корневой, а это тоже требует времени.

Но нас устраивает, что дерево не будет сбалансировано постоянно. Главное, что при проведении n операций поиска общее время O(n*log(n)) гарантировано —то есть O(log(n)) на один поиск. Таким образом, хотя один поиск может занять время, превышающее O(log(n)), в среднем все операции поиска сходятся ко времени O(log(n)), а наша цель как раз и есть ускорение поиска.