文章目录
一 :树的分类
1、二叉树(Binary Tree):
每个节点最多有两个子节点,通常称为左子节点和右子节点。
是许多其他树结构的基础,如二叉搜索树和平衡二叉树。
应用广泛,包括排序、搜索、表达式解析等。
2、二叉搜索树(Binary Search Tree, BST):
二叉树的一种特殊形式,其中左子节点的值小于父节点,右子节点的值大于父节点。
提供了高效的插入、删除和搜索操作,但最坏情况下可能退化为链表。
适用于需要频繁插入、删除和搜索的场景。
3、平衡二叉树:
包括AVL树、伸展树等,它们通过旋转和重新平衡操作来保持树的平衡。
平衡二叉树确保树的高度保持在对数级别,从而保证了高效的搜索性能。
适用于需要频繁搜索、插入和删除的场景,特别是在数据动态变化的情况下。
4、字典树(Trie):
又称前缀树或键树,用于存储关联数组,其中键通常是字符串。
每个节点代表字符串的一个字符,从根到叶子的路径表示一个完整的字符串。
适用于快速检索具有公共前缀的键,如字符串搜索、自动补全等。
5、多叉树(Multiway Tree):
每个节点可以有多个子节点,不像二叉树那样仅限于两个。
多叉树根据具体的定义和用途可以有不同的形式,如k叉树等。
适用于需要表示具有多个子元素的数据结构,如文件系统的目录结构。
二、二叉搜素树
B树:
查询时间复杂度:O(log n)
B树是一种平衡的多路搜索树,其中每个节点可以包含多个键和子节点。查询操作从根节点开始,根据键的值在子树中进行选择,直到找到所需的键或确定键不存在。由于B树的高度与数据量的对数成正比,因此查询操作的时间复杂度为O(log n)。
B+树:
查询时间复杂度:O(log n)
B+树是B树的扩展,其主要区别在于所有键都存储在叶子节点中,而内部节点仅作为索引使用。这种设计使得B+树在范围查询和磁盘存储方面更加高效。尽管结构有所不同,但查询操作的基本过程与B树相似,因此查询时间复杂度也为O(log n)。
红黑树:
查询时间复杂度:O(log n)
红黑树是一种自平衡的二叉搜索树,它通过颜色和特定的调整规则来保持树的平衡。在红黑树中,每个节点都有一个颜色属性(红色或黑色),并且满足一系列属性以确保树的平衡。查询操作在红黑树中按照二叉搜索树的方式进行,因此时间复杂度为O(log n)。