一、树
1. 红黑树与二叉搜索树
1.1 二叉搜索树
1.2.1 定义
- 如果左子树不为空,则左子树所有结点值都小于根节点的值;
- 如果右子树不为空,则右子树所有节点值都大于或等于根节点的值;
- 任意一颗字数也是二叉搜索树。
- 查找时间复杂度是O(logn),极端降低到O(n)。
1.2.2 平衡二叉搜索树(AVL树)
1. 平衡树(Balance Tree,BT)
- 任意结点的子树的高度差都小于等于1;
- 常见的平衡树包括B树(MySQL中的索引)、AVL树等
2. 平衡二叉搜索树-AVL树
注意:AVL树,是两个作者Adelson-Velskii 、Landis的缩写
- 同时满足二叉搜索树以及平衡树的特点;
- 可以有效的减少二叉树的深度,从而提高了查询的效率;
- 严格平衡,代价高。
1.2 红黑树(Red Black Tree, R-B tree)
1.2.1 定义
- 一种特化的AVL树,在插入和删除时通过特定操作(左旋或右旋)保持二叉查找是的相对平衡,从而获得较高的查找性能。
- 不是一种严格的AVL树,只是黑色平衡
- 左子树和右子树的黑色结点数量相等
1.2.2 红黑树特性->黑跟黑叶红不邻,同祖等高只数黑
首先,符合二叉搜索树;
- 结点非黑即红;
- 根节点是黑色;
- 叶子结点是黑色的;
- 相邻节点不同为为红色,红色结点的子节点必须是黑色;
- 从一个节点到该节点的叶子节点的所有路径上包含的黑节点数量相等。