二叉平衡排序树性能是极致吗? 不是
如果我们要提升二叉平衡排序树的性能该如何做?
影响二叉平衡排序树的性能的点在哪?
答: 在于二叉平衡排序树只能有两个叉,导致在节点铺满的时候也会有很多层。
希望可以一个节点存多个数,可以提升空间的性能。
如何才能让查找的效率尽可能的高?
答: 树的层级越少,查找效率越高
怎么样才能让二叉平衡排序树的层数变的更少?
答:如果不是二叉,层数会更少。
叉越多,层数越少,但是叉越多,树的结构月复杂。(4个叉的时候性能最好)
234树
我们希望有一个棵树,最多有四个叉(度为4)。
234树子节点永远在最后一层
234树永远是平衡的(每一个路径高度都相同)
达成了一定的效果
分支变多了,层数变少了。
节点中存的树变多了,节点变少了。
因为分支多了,所以复杂度上升了
希望对234树进行简化。
希望能简化为二叉树
希望依旧保留多叉
希望依旧单节点中存放多个值
红黑树
性质1. 节点是红色或黑色。(红色代表啥,黑色代表啥?)
性质2. 根节点是黑色。(为啥?黑色节点代表啥?)
性质3. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
(红色是啥,黑色是啥?)
性质4. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。(为什么不算上红色节点呢)
红色节点可以和下面的黑色节点进行组合(计算层级时,红色节点不参与计算,在234树中算同一层)。
红黑树永远是平衡的。红黑树在逻辑上保留多叉,同时单节点中存放多个值,但物理上不是。
红黑色本质上就是一个普通的二叉平衡排序树。只不过我们赋予了节点不同的意义而已。