关于树的数据结构

105 阅读3分钟

大部分人应该不太熟,今天有时间来学习总结一下

先复习概念🙌

概念不说了,大家都知道😜😜😜

分类

一涉及到具体的分类,可能就有人搞不清楚了😭,没错,就是我

下面来说常见的几个分类:

二叉树

二叉树(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+树的结构更适应频繁的插入和删除操作(因为高度低+叶子节点有链表连着),平衡性的维护相对简单,性能更稳定。

先梳理这么多吧,后面用到了,再更新这篇博客💕💕💕