具体代码请看:NDKPractice项目的datastructure38avl
1. AVL树的定义:
定义:左右两个子树高度不超过1
也称为平衡二叉搜索树
,意义:
- 普通二叉搜索树会出现极度不平衡的情况,复杂度有可能退化成O(n)
- 平衡二叉搜索树可确保复杂度在O(logn)
2.旋转操作
[3,2,1,4,5,6,7,10,9,8]
2.1 左旋
2.2 右旋
2.3 先左旋再右旋
2.4 先右旋再左旋
3.移除
比较复杂: 1. 当左右不为空,最大或者最小值会作为后继,要确保在删除最大或者最小值的时候要更新节点的高度
看项目工程代码的 removeNode
方法
4. 具体代码
1 | // c++ map multiMap 红黑树 |