记数据结构(1)-AVL树

218 阅读1分钟

AVL 树是一种平衡二叉树,平衡二叉树递归定义如下:

  • 左右子树的高度差小于等于 1
  • 其每一个子树均为平衡二叉树(AVL树)

需要一个监督指标,以此来判断是否需要进行平衡操作。这个监督指标被称为“平衡因子(Balance Factor)”。定义如下:
平衡因子: 某个结点的左子树的高度减去右子树的高度得到的差值。 即可以以平衡因子来定义AVL树所有结点的平衡因子的绝对值都不超过 1 的二叉树
若平衡因子大于1,则AVL树需要做出平衡操作,平衡操作包括两个,1.左旋,2.右旋

左旋

image.png

右旋

image.png

不平很的情况分为四种分别为LL,RR,LR,RL

  • LL:这种情况是新增的节点在左孩子的左子树上,这种情况需要将左孩子进行右旋

image.png

  • RR:这种情况是新增的节点在右孩子的右子树上,这种情况需要将右孩子进行左旋(情况跟LL对称)

  • LR(Left Right):这种情况是新增的节点在左孩子的右子树上,这种情况需要将新增节点的父节点先左旋后将右旋

image.png

  • RL(Right left):这种情况是新增的节点在右孩子的左子树上,这种情况需要将新增节点的父节点先右旋后左旋(情况跟LR对称)