树,开始学习
树的定义
- 根节点
- 父节点,左子树,右子树
- 叶子结点
树的种类
-
二叉树(n叉树):每个节点最多只有2个节点
- 平衡二叉树:对于二叉树的每个节点,他的左右子树的高度差不超过1
- 满二叉树:每个节点(除了叶子节点)都有两个节点(想象硕果累累的苹果树),所有子节点都在同一层
- 完全二叉树:除了最后一层,其他层都是满的,而且叶子节点都集中在左边(营养不均衡的苹果树)
- 二叉查找树:(二分查找),左节点<根节点<右节点的值
-
红黑树
-
红黑书也是二叉(自!!!)平衡查找树,不过我实在是记不得他的性质,所以要把他单独拿出来,加深记忆
-
每个节点要么红的,要么是黑的
-
根结点是黑色的
-
叶子结点是黑的
-
红色节点的儿子是黑的
-
节点的每条路径上的黑色节点的数量是相同的
-
如何实现自平衡
- 旋转
- 变色
-
-
B树
-
B树也是一个自平衡的树,对于增删改查都是log级别的,是一个一般化的二叉查找树(m阶),可以最多拥有m个子节点
放张图理解一下下
- 根节点至少拥有2个子节点
- 每个叶子结点都有k-1个元素和k个孩子,m/2 <= k <= m
- 每个叶子结点都包含k-1个元素
- 叶子结点都在同一层
- 节点的元素按照大小排列
- 数据库索引
-
B+树