您的位置:首页 > 其它

伸展树学习小结

2016-01-28 12:36 316 查看
伸展树实际上就是一种二叉搜索树,只不过它采用了一个理念:刚刚访问过的数据很可能再次被访问,于是,为了在概率上提高多次查找效率,它采用了一种简单粗暴的方法,即把刚刚访问过的节点移动到根节点的位置。这与我们以前学过的平衡二叉树有异曲同工之妙,都是为了保证效率而对树结构进行重构。下面我们看一下这种重构是怎么实现的。

假设要查找的节点是X,其父节点为Y(如果存在),父节点的父节点为Z(如果存在)

1. X的父节点Y为根节点。以X为轴,顺时针旋转Y,X的右孩子(如果存在)变为Y的左孩子,Y变为X的右孩子,其余不变。



2. X、Y、Z呈“一”字形结构。以X为轴,顺时针旋转Y,Z,Y的右孩子变为Z的左孩子,X的右孩子变为Y的左孩子,Y变为X的右孩子,Z变为Y的右孩子。



3. X、Y、Z呈“之”字形结构(都这么叫,但我觉得一点也不像。。。)。这种形式需要先转换为“一”字形结构,再按“一”字结构转换。首先逆时针旋转XY这条边,使Y成为X的左孩子,X的左孩子为Y的右孩子,X为Z的左孩子,再按照“一”字形转换即可。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息