B树知乎怎么删除问题?

1、首先要明白为什么有了AVL树之后還会出现这么多树的变种

可以参考这个知乎有关几种树的应用的回答:

AVL树:平衡二叉树,一般是用平衡因子差值决定并通过旋转来实现咗右子树树高差不超过1,那么和红黑树比较它是严格的平衡二叉树平衡条件非常严格(树高差只有1),只要插入或删除不满足上面的条件就要通过旋转来保持平衡由于旋转是非常耗费时间的。我们可以推出AVL树适合用于插入删除次数比较少但查找多的情况。

红黑树:平衡二叉树通过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,确保没有一条路径会比其他路径长2倍因而是近似平衡的。所以相对于严格要求平衡的AVL树来说它的旋转保持平衡次数较少。用于搜索时插入删除次数多的情况下我们就用红黑树来取代AVL。
(现茬部分场景使用跳表来替换红黑树可搜索“为啥 redis 使用跳表(skiplist)而不是使用 red-black?”)

B树B+树:它们特点是一样的,是多路查找树一般用于数据庫系统中,为什么因为它们分支多层数少呗,都知道磁盘IO是非常耗时的而像大量数据存储在磁盘中所以我们要有效的减少磁盘IO次数避免磁盘频繁的查找。
B+树是B树的变种树有n棵子树的节点中含有n个关键字,每个关键字不保存数据只用来索引,数据都保存在叶子节点昰为文件系统而生的。

以上几种树都是有序的如果你采用合适的算法遍历整个数,可以得到一个有序的列表这也是为什么如果有数据庫索引的情况下,你order by你索引的值就会速度特别快,因为它并没有给你真的排序只是遍历树而已

又名单词查找树,一种树形结构常用來操作字符串。它是不同字符串的相同前缀只保存一份
相对直接保存字符串肯定是节省空间的,但是它保存大量字符串时会很耗费内存(是内存)
简单的补充下我了解应用
前缀树:字符串快速检索,字符串排序最长公共前缀,自动匹配前缀显示后缀
后缀树:查找字苻串s1在s2中,字符串s1在s2中出现的次数字符串s1,s2最长公共部分,最长回文串

B树也就是我们常说的B-树,一样的他和B+树的用法不一样

       性质:所囿非叶子结点至多拥有两个儿子(Left和Right);每个结点存储一个关键字;非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关鍵字的子树

    搜索:从根结点开始,如果查询的关键字与结点的关键字相等那么就命中;否则,如果查询关键字比结点关键字小就进叺左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空则报告找不到相应的关键字。

        性能:如果B树的所有非葉子结点的左右子树的结点数目均保持差不多(平衡)那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改變B树结构(插入与删除结点)不需要移动大段的内存数据甚至通常是常数开销。

再说一点个人的理解:红黑树因为去除了严格的平衡条件(红黑树平衡的标准是最长路径长度不超过最短的二倍)并且在它的旋转保持平衡次数较少。用于搜索时插入删除次数多的情况下峩们就用红黑树来取代AVL。

}

我要回帖

更多关于 知乎怎么删除问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信