javaSE.二叉查找树和平衡二叉树
二叉查找树也叫二叉搜索树或是二叉排序树,:
- 左子树中所有结点的值,均小于其根节点的值
- 右子树中所有结点的值,均小于其根结点的值
- 二叉搜索树的子树也是二叉搜素树
如果是递增的情况👇
1 2 3 4 5 6 7
这样插入就是其实就是一个单链表,查找效率退化了。
二叉查找树只有在理想的情况下👇👇,查找效率才是最高的,因为可能会有一边倒👆的情况。
4 2 6 1 3 5 7👇这样按顺序插入👇
↗7
4 → 6 → 5
↘ 2 →3
↘1
平衡二叉树
上面的理想情况是一种平衡二叉树,平衡二叉树就是为了提高查找效率的
- 平衡二叉树一定是一颗二叉查找树
- 任意结点的左右子树也是一颗平衡二叉树
- 从根结点开始,左右子树都高度差不能超1,否则视为不平衡
模拟平衡二叉树插入动画网站👇
AVL Tree Visualzation
https://www.cs.ustca.edu/~galles/visualization/AVLtree.html - 搜索
失衡情况👇
RR型 RL型
LL型 LR型
观察模拟过程👇