1. 平衡树:AVL(平衡二叉搜索树),红黑树(AVL整体效率低于红黑树,现在一般都用红黑树)
  2. 二叉平衡树:平衡二叉搜索树,也可叫做AVL树,是一种自平衡的树。
  3. 除了规定左节点小于根节点,右节点大于根节点以外,还规定了左子树和右子树的高度差不得超过1
  4. 因为查找效率和树的高度成正比,所以我们需要建立一棵尽可能矮的树。
  5. 平衡因子:左子树的高度减去其右子树的高度。
  6. 所以,平衡二叉树中,各个结点的平衡因子的绝对值小于等于1,【-101】,可以满足我们的二叉平衡树的需求,平衡二叉树是一棵二叉搜索树,只不过平衡树比较矮而已。
  7. 控制平衡因子:如果平衡因子的绝对值超过了1,那么我们就称之为:失衡
  8. 控制平衡因子,要把平衡因子控制在绝对值不大于1的范围内(平衡值调整),在平衡二叉树中,使用旋转操作来达到平衡。

左侧子节点高于右侧子节点时

image.pngimage.png

右侧子节点高于左侧子节点时

image.pngimage.png

  1. AVL树相对于红黑树,它的插入/删除操作效率都不高
  2. 红黑树(R-B tree
  3. 红黑树是一种自平衡的二叉搜索树,以前叫作平衡二叉B
  4. 红黑树增加的一些特性:
  5. 1、结点是红色或者黑色(结点上有一个color属性)
  6. class Node{
  7. constructor(){
  8. this.color = 'black';
  9. }
  10. }
  11. 2、根节点是黑色
  12. 3、叶子节点都是黑色且为nullNIL节点)
  13. 4、连接红色节点的两个子节点都是黑色,红色结点的父节点都是黑色,红色结点的子节点都是黑色
  14. 5、从任意结点出发,到其每个叶子结点的路径中包含相同数量的黑色结点
  15. 5条性质就是红黑树给出的自动维持平衡所具备的规则
  16. 是为了保证:从根节点到叶子节点的最长路径不大于最短路径的2
  17. 红黑树插入数据的时候,会先去遍历数据应该插入到哪个位置,插入的数据一定是红色的

image.pngimage.png

  1. 总结:
  2. 1、树
  3. 2、二叉树
  4. 3、二叉搜索树
  5. 4、红黑树:自平衡的二叉搜索树