YC Yc.W home Systems · C++ · AI Infrastructure
Computer Science · Note

高级搜索树

Explore all Computer Science notes →

伸展树

逐层伸展 宽松平衡

局部性

Locality: 刚被访问过的数据,极有可能很快地再次被访问—>信息处理中常见 //BST

BST:刚刚被访问过的节点,极有可能很快的再次被访问 下一将要访问的节点,极有可能就在刚被访问过的节点的附近 连续的m次 查找(m » n =|BST|) ,采用AVL共需要O(mlogn)时间

个人理解:在足够长的时间中,把被访问次数足够多的节点放到前面,增加访问效率

逐层伸展

节点v一旦被访问,随即转移至树根 —>通过旋转的方法移动二叉树的节点。 zig(顺时针)、zag(逆时针)

一步一步往上爬

自下而上,逐层单旋
	zig( v->parent)
	zag( v->parent)
直到v最终被`推送`至根 ### 最坏情况 旋转次数呈`周期性`的`算术级数`演变:每一周期累计`\Omega \left ( n^{2} \right )` 分摊`\Omega \left ( n\right )`---->Latex公式编辑器 ### 双层伸展 构思精髓:向上追溯`两层`,而非`一层` 反复考察`祖孙三代`:g=parent(p),p=parent(v),v 根据他们的相对位置,经`两次旋转`使得v上升两层,成为(子)树根

zig-zag zag-zig 与AVL树双旋完全等效 与逐层伸展别无二致 zig-zig zag-zag –>先移动祖父节点,然后移动父节点


← Previous 建模