1. 平衡二叉搜索树定义
平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:
-
- 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,
-
- 并且左右两个子树都是一棵平衡二叉树。
如图:
最后一棵 不是平衡二叉树,因为它的左右两个子树的高度差的绝对值超过了1。
C++中map、set、multimap,multiset的底层实现都是平衡二叉搜索树,所以map、set的增删操作时间时间复杂度是logn,
注意unordered_map、unordered_set,unordered_map、unordered_map底层实现是哈希表。
所以大家使用自己熟悉的编程语言写算法,
一定要知道常用的容器底层都是如何实现的,
最基本的就是map、set等等,否则自己写的代码,自己对其性能分析都分析不清楚!