大部分人应该不太熟,今天有时间来学习总结一下
先复习概念🙌
概念不说了,大家都知道😜😜😜
分类
一涉及到具体的分类,可能就有人搞不清楚了😭,没错,就是我
下面来说常见的几个分类:
二叉树
二叉树(Binary Tree): 每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树可以进一步分为满二叉树、完全二叉树等。
这个不用多说,跟我们打交道最多的就是二叉树
二叉搜索树
二叉搜索树(Binary Search Tree): 一种特殊的二叉树,对于每个节点,其左子树上的所有节点的值都小于该节点的值,而右子树上的所有节点的值都大于该节点的值。
因为二叉搜索树特殊的结构使得它是有序性的,而且它的有序性可以提供高效的范围查询
同时可以高效的进行插入和删除
对于普通的二叉树进行插入和删除为什么效率不高?
答:插入的话会导致树的不平衡,从而使得树的高度增加,进而影响查找效率。同时删除的话可能进行大量的数据迁移
平衡树
平衡树在二叉搜索树的基础上引入了平衡性的概念。它要求树的左右子树的高度差保持在一个可接受的范围内,以确保树的高度相对较低,从而提高操作效率。
AVL 树
AVL 树是一种自平衡二叉搜索树,它的插入和删除后都要经过旋转操作来保持平衡
AVL树的平衡性需要在每次插入或删除操作后进行调整,这可能导致更多的旋转操作,相对于其他平衡树结构,如红黑树,可能更耗费性能。
红黑树
红黑树也是一种自平衡的二叉搜索树,它在插入和删除操作时通过一系列的规则保持树的平衡。
红黑树的设计灵活性较高,插入和删除操作相对于其他平衡树结构,如AVL树,更为简单,但在查询性能上稍微逊色。因为这种灵活性是通过对平衡条件的松弛达到的,允许树的高度相对更高一些,但带来了更轻量级的维护操作
B树
B树(B-tree)是一种自平衡的搜索树,广泛用于数据库和文件系统中。B树通过维护平衡性来保持对数时间复杂度的插入、删除和查找操作,适用于处理大量数据的存储和检索。
特点是多路搜索,同时B树来说实现较为复杂,不适合于小规模数据、高并发情况
B+树
B+树(B-plus tree)是B树的一种变体,也是一种自平衡的搜索树,常被用于数据库和文件系统的索引结构。
相对于B树,做了什么改进:
- B+树的内部节点只存储关键字和指向子节点的指针,而实际的数据都存储在叶子节点中。这样可以提高存储密度,使得每个内部节点能够存储更多的关键字,减少树的高度。
- B+树通过链表连接的叶子节点,使得范围查询更为高效,只需遍历相邻的叶子节点即可。
- B+树的结构更适应频繁的插入和删除操作(因为高度低+叶子节点有链表连着),平衡性的维护相对简单,性能更稳定。
先梳理这么多吧,后面用到了,再更新这篇博客💕💕💕