【算法】替罪羊树

替罪羊树是一种不依赖旋转操作的平衡树,通过定义平衡因子alpha进行暴力重构以保持平衡。当节点的某子树size超出alpha倍时,该子树会被拍扁并重新建树。插入和删除操作中,若子树需要重构,则进行相应处理。重构过程包括拍扁子树并重新建树,时间复杂度为O(n)。虽然单次重构复杂度高,但通过势能分析,单次操作的均摊时间复杂度为O(logn)。alpha通常取0.7,以平衡树深和重构频率。
摘要由CSDN通过智能技术生成

在众多的平衡树之中,大部分依赖旋转(单旋或双旋)来维持平衡,但是有一些平衡树是不依赖于旋转操作。替罪羊树便是其中一种。

替罪羊树基于一种暴力重构的操作来保证平衡,具体来说,就是定义一个平衡因子alpha,当某个节点x的某棵子树的size值>x的size值*alpha时便将这棵以x为根的子树拍扁重构。


一个需要重构的例子

重构的目的是让该子树将变得平衡,那么如何进行重构使得该树变得平衡呢?

具体方法是:

1、将该树拍扁,存入数组/vector中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值