红黑树是一种基于二叉查找树的数据结构,它具有如下性质:
(1) 二叉查找树的性质它都有
(2) 每个节点都有一个颜色属性,每个节点或是红的或是黑的
(3) 根节点必须是黑的
(4) 每个叶子节点(nil节点)为黑
(5) 如果一个节点为红的,那么它的两个孩子都是黑的
(6) 每个节点到它子孙叶子节点的路径上的黑色节点个数是相同的
相比二叉查找树,红黑树在添加或删除元素的同时还需要调整树的深度,所以需要用到对树结构的一些旋转操作,下面的实例代码给的非常详尽了,可以看看LeftRotate()和RightRotate()函数式如何实现旋转的。如果有人发现了BUG请在留言中发表~
这个代码是在之前的"Golang以OO的方式实现二叉查找树"里的代码加工实现的,因为本人技术不到位。。。出了好几次BUG,修修补补,写了这么一大堆代码,大家凑合着看。。。:
package main
import (
"fmt"
)
var count int
type TreeNode struct {
data float64
color