红黑树与AVL树同样同为二分搜索树,红黑树又称为是保持“黑平衡”的二叉树,红黑树最大高度为:2logn,红黑树由这么几个独特的特征:
一、每一个节点或黑或红
二、根节点为黑色
三、每一个叶子节点(最后的空节点)都为黑色
四、若是一个节点为红色,则他孩子节点全为黑色
五、从任意节点到叶子节点,通过的黑色节点为同样多的
六、全部红色节点都向左倾斜code
在以前的二叉搜索树中咱们在实现的节点结构中定义了用于存储元素的e、用于存放左子树的left、用于存放右子树的right等对象,而在AVL树中比二叉搜索树有所不一样因为AVL须要维护左右子树的节点高度因此多了一个元素height用于存放节点的高度;
红黑树也是基于以前二叉搜索树变体而来的,在红黑树中节点也只比二叉搜索树多一个元素,二叉搜索树的节点由如下元素组成:对象
e :用于存储节点元素
left: 用于存储左子树
right:用于存储右子树
color:用于标志节点颜色,节点是红色或黑色blog
type RBT struct { root *RBTNode size int compare Comparable } type RBTNode struct { e interface{} left *RBTNode right *RBTNode color bool }
根据红黑树的特性、定义可知:
一、大小为N的红黑树其高度不超过2logN
二、最坏状况下插入、查找元素的时间复杂度为:2logN
三、平均状况下插入、查找元素的平均复杂度为:logNip
这里只简单介绍了红黑树的相关概念,下面将从代码实现的角度具体分析红黑树的实现;io