二叉搜索树
- 每个节点的左子树都小于此节点的值
- 每个节点的右子树都大于此节点的值
- 左右子树也都是二叉搜索树
- 在查找的时候,类似于二分查找,时间复杂度都是O(lgn)
缺点:
- 二叉搜索树左右不平衡就会使查找变慢,甚至极端情况二叉搜索树可能退化为链表
平衡二叉树
- 平衡二叉树都是二叉搜索树
- 每个节点的左子树和右子树高度最多相差1
缺点:
- 每次插入新节点都要重新调整以达到平衡,这是非常耗时的,虽然查询效率很高,但是增删效率很低。
- 树越高,增删节点就越慢,要维持平衡就要访问很多节点,效率越低。
- 树越高,查询效率越慢
- 适合用于增删频率低,查询频率高的场合。
红黑树
- 红黑树也是二叉搜索树
- 红黑树是一种若平衡二叉树,红黑树不用必须要求左子树和右子树高度最多相差1,只需要大致平衡就行
- 对于增删和查询都很频繁的场景,适合用红黑树。
缺点:和平衡搜索树一样,树越高,效率越低。
B树
- B树是子节点可以有M-1个子节点的搜索树
- 每个节点不仅可以是一个val,还可以是升序数组
- 子节点从左到右以升序排列
优缺点: - 相比较于平衡二叉树红黑树,更加矮胖,树的高度低,效率高
- 但是相较于B+树,还不够矮胖,效率仍然没有B+树效率高
- B树更适合增删改,B+树更适合查询