【算法导论】第12、13章 二叉搜索树和红黑树 学习笔记
二叉搜索树
如果二叉树中的每个节点都满足:
则称这棵树为二叉搜索树BST,又称二叉查找树。
BST支持许多动态集合操作,包括:SEARCH、MINIMUN、MAXMUM、PREDECESSOR、SUCCESSOR、INSERT和DELETE等。
在平均条件下,BST上的基本操作所花费的时间与这棵树的高度成正比:
平衡二叉树
AVL (Adelson Velskii和 Landis)树是带有平衡条件的二叉查找树。这个平衡条件必须容易保持,而且它必须保证树的深度是O(log N)。最简单的想法是要求左右子树具有相同的高度。
一般限制为:一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉搜索树。(空树的高度定义为-1,树中叶子的高度为0,往根上递增)
红黑树
一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(lg n)。
红黑树的满足条件
- 每个节点是红色或者黑色的
- 根节点是黑色的
- 每个叶节点(NULL)是黑色的
- 如果一个节点是红色的,则它的两个子节点都是黑色的
- 对每个节点,从该节点到其后代所有叶节点的简单路径上,均包含相同数目的黑色节点
与二叉平衡树的区别:
红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能
引理13.1 一棵有n个内部节点的红黑树的高度至多为
所以,由BST上的基本操作所花费的时间与这棵树的高度成正比可知,红黑树的查找、插入、删除的时间复杂度最坏为。