数据结构专题——1.从BST到BBST

BST——树家族之祖。

BST以(key,value)pair为节点,以树结构来组织数据。

特点1.每个节点的左子树节点都比他小,而右子树节点都比他大,即具有左小右大的顺序性;(此处采用无重复key的BST,有重复时加上“可以=”的条件即可)

特点2.BST的中序遍历即为一个sorted的元素序列。这也是BST的充要条件。

查找是BST操作的基础,插入和删除都要先执行查找操作,它们的复杂度也同查找操作。

因为有顺序性,BST的查找类似于二分查找,是O(logn)的,就树而言即为O(h)。注:h为树的高度。

极端坏的情况下,树高h可能就为n,那么O(logn)变成O(n)是不能接受的,就需要限制h而又保持BST形式的新形式,于是BBST家族诞生了。

BBST家族:

1.AVL树:BST与“平衡因子”之子,以平衡因子来限制树高h:条件是-1<=左子树高度-右子树高度<=1,即平衡因子只能取{-1,0,1}。若因动态操作平衡因此不是这三个数,就叫做“失衡”,则采用zig、zag旋转使其“复衡”,但这种亦步亦趋的方式又有点慢,所以更快的复衡办法是“3+4重构”。

        在代码实现时注意:insert(e)之后可能会有祖先失衡,但经过一次复衡操作即可解决,此时可break;退出循环查找,即若找到一个就不需再查找其余祖先;但remove(e)操作带来的失衡可能会向上传递࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值