首页 > 代码库 > 平衡查找树
平衡查找树
2-3查找树:包含2-(一个键,两条链)节点和3-(两个键,三条链)节点的查找树
所有空链到根节点的距离相同
插入时:当插入的值导致节点变四叉时进行分裂,将中间的值传给上一个节点,
并将另外两个值作为两个子节点分开,若上一节点也因此变成四叉,
依次类推
它是由下向上生长的
插入和查找操作访问节点不超过lgN个,所以时间复杂度为lgN,在最坏的情况下任有较好的性能
(当按照升序插入10个键会得到高度为9的2-查找树,但是使用2-3查找树的高度为2)
红黑树:在2-3树的基础上,用一条红链接相连的两个2-节点表示一个3-节点
(图中a是红节点,即红链接的左下)
另一种定义: 满足红链接均为左连接,没任一节点同时和两条红连接相连,
任意空链接到根节点的路径上的黑链接数量相同的二叉查找树
在实际操作中可能会出现红右链接或两条连续红链接,所以需要旋转,左旋,或者右旋
变色:
插入操作:分三种情况,
1.新键大于原树的两个键:插在右边,变色
2.新键在两键之间:插在较小的右边,左旋,右旋,变色
3.新键小于两键:插在较小的左边,右旋,变色
实际上这三种情况是互相转化的,情况2,3都是转化成1再变色的
红黑树的性质(重要):根黑,要么红要么黑,红的儿子黑,
从一个节点到其所有子孙节点所有路径包含相同的黑
B树:将2-3树一般化,将每个节点的键值对增加到 m-1个(相当于有序表),所有节点都带有关键码
到达某个节点,先在有序表里查询,找不到向下找,到达叶子节点,说明没有关键码。
B+树:只有叶子节点带有关键码,为所有叶子节点增加一个链指针指向相邻叶子,所有关键字都在叶子节点出现(而B树不是)
B树与红黑树最大的不同在于,B树的结点可以有许多子女,从几个到几千个。那为什么又说B树与红黑树很相似呢?因为与红黑树一样,一棵含n个结点的B树的高度也为O(lgn),但可能比一棵红黑树的高度小许多,应为它的分支因子比较大。
参考:http://www.cnblogs.com/ivictor/p/5849061.html
http://brianway.github.io/2016/10/14/algorithms-data-structures-2/
平衡查找树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。