红黑树:
也是一种自平衡的树,它不是根据子树的高度差来调整平衡的,而是给节点设置一种颜色来达到平衡
红黑色的特性:
1、每个节点或者是黑色、或者是红色
2、根节点必须是黑色
3、每个叶子节点(NULL)是黑色
4、如果一个节点是红色,则它的子节点必须是黑色,不能有两个连续的红色节点
5、从一个节点到该节点的子孙节点的所有路径上包含了相同数目的黑色节点
保证大致上红黑树是平衡 (最长路径不超过最短路径的两倍)
红黑树插入后的调整: 插入的节点一定是红色
1、如果父节点是黑色,直接插入
2、如果父节点是红色,需要调整
a、叔叔不存在 or 叔叔为黑色
进行左旋 or 右旋
祖父节点置红 父节点置黑
b、叔叔存在且为红色
把祖父置红,父节点和叔叔置黑
把祖父节点当做当前节点,继续向上讨论调整
优点:插入、删除的效率比AVL树高
缺点:没有AVL树平均,查找效率没有AVL树高,但也并不差
哈夫曼树:
基本概念:
路径长度:从一个节点到另一个节点之间的路径条目数
根节点到第n层节点的路径长度为n-1
树的路径长度:从根节点出发到每个节点的路径长度之和
节点的权:若将树中节点赋予一个有某种意义的数值,该数值就称为该节点的权
节点的带权路径长度: 从根节点到该节点的路径长度