平衡二叉树
由于二分搜索树顺序创建一个树时,会退化成链表,大大降低的效率,我们引出平衡二叉树——AVL树,G.M.Adelson-Velsky和E.M.Landis ,AVL,最早的自平衡二分搜索树结构。
平衡二叉树特点
- 对于任意一个节点,左子树和右子树的高度查不能为超过1
- 平衡二叉树的高度和节点数量之间的关系也是O(logn)的
- 节点高度
- 平衡因子
AVL树的增删
1 | package AVL; |
AVL树的左旋和右旋
1 | //对节点进行右旋操作,返回旋转后新的根结点x |
1 | //对节点y进行左旋转操作,返回旋转后新的根结点x |
LL RR LR RL
左左型,右右型,左右型,右左型
LR
然后再对树进行右旋
RL
对x进行右旋转
成为RR情况,对y进行左旋转
基于AVL树的集合和映射
AVLMap
1 | package map; |
AVLSet
1 | package trie; |