分裂BST

1.引言

对一棵查找树(search tree)进行查询/新增/删除 等动作, 所花的时间与树的高度h 成比例, 并不与树的容量 n 成比例。如果可以让树维持矮矮胖胖的好身材, 也就是让h维持在O(lg n)左右, 完成上述工作就很省时间。能够一直维持好身材, 不因新增删除而长歪的搜寻树, 叫做balanced search tree(平衡树)。

本节我们讲解如何修改根插入,让旋转操作在一定意义上平衡树,通过旋转将新插入节点带到根,按这种方式生成的BST就是分裂BST。

2.旋转

a>右旋转


基于S点的右旋操作:

1>S初下移,作为左孩子的右链接;

2>S的左链接得到新根E的链接;将E的右链接设置成S;并设置A的右链接指向E;

旋转的作用是将E及其左子树上移一层;将S及其右子树下移一层;树的余下部分没有受影响;在经过旋转之后以*S和*E为根的新子树为平衡二叉树,而且它的深度和插入之前以*A为根的子树相同。因此平衡的二叉树因插入节点而失去平衡时,仅需对最小不平衡子树进行平衡旋转处理即可。因为经过旋转处理之后的子树深度和插入之前相同,因而不影响插入路径上所有祖先节点的平衡度。

b>左旋转


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值