伸展树(Splay Tree)的深度理解
伸展树作为一种非常受欢迎的数据结构,其最初的想法(标记为想法一)是通过变换树的结构将最近访问的元素置于树根,倘若一系列操作都是和该元素有关,那么在变成树根之后将极大的提高该元素的访问速度。基于该想法,每次访问该元素时,沿着访问路径,逐层进行简单的单层旋转,从而使该元素的深度减小,最后变成树根。
实际应用中,多次连续的操作也可能是访问不同的元素,所以不得不考虑其他元素的访问速率问题。所以进一步的想法(标记为想法二)是,如果在树根化的过程中,能够使树的整体结构更加平衡,那么不仅可以把当前元素置于树根,而且也方便了其他元素的访问。
但是,大家不要对想法二想得过于完美。因为目标元素的树根化过程只和路径上的元素息息相关。所以想法二中的平衡只是针对