十3、Mysql之平衡二叉树(AVL树)

一、平衡二叉树(AVL树)
  性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,而且左右两个子树都是一棵平衡二叉树;
  AVL树如图: 3d

  非AVL树如图:
致使AVL树失去平衡大体分为4种:
  LL:LeftLeft,也称“左左”。插入或删除一个节点后,根节点的左孩子(Left Child)的左孩子(Left Child)还有非空节点,致使根节点的左子树高度比右子树高度高2,AVL树失去平衡。
  RR:RightRight,也称“右右”。插入或删除一个节点后,根节点的右孩子(Right Child)的右孩子(Right Child)还有非空节点,致使根节点的右子树高度比左子树高度高2,AVL树失去平衡。
  LR:LeftRight,也称“左右”。插入或删除一个节点后,根节点的左孩子(Left Child)的右孩子(Right Child)还有非空节点,致使根节点的左子树高度比右子树高度高2,AVL树失去平衡。
  RL:RightLeft,也称“右左”。插入或删除一个节点后,根节点的右孩子(Right Child)的左孩子(Left Child)还有非空节点,致使根节点的右子树高度比左子树高度高2,AVL树失去平衡。


四种失去平衡的状况下对应的旋转方法:
  LL旋转步骤:
    1)、旧根节点的左孩子为新根节点,
    2)、旧根节点变为新根节点的右孩子,
    3)、旧根节点的左孩子的右孩子为旧根节点的左孩子 cdn

  RR旋转步骤:
    1)、旧根节点的右孩子为新根节点,
    2)、旧根节点变为新根节点的左孩子,
    3)、旧根节点的右孩子的左孩子为旧根节点的右孩子
  LR旋转:
    1)、根节点的左孩子进行RR旋转,
    2)、根节点进行LL旋转,
  RL旋转:
    1)、根节点的右孩子进行LL旋转,
    2)、根节点进行RR旋转,
相关文章
相关标签/搜索