目录
5.5.1 二叉排序树(BST)
1. 定义
2. 插入
给定一组数据,以第一个数为根,按照左<右的规律插入
3.删除
(1)删除叶节点,不会破坏二叉树的性质
(2)删除的结点只有一棵树的情况
(3)待删除结点有两颗树的情况
①
根据待删除结点的后继来删除
②根据前驱来删除
4.二叉排序树的查找效率
最好情况:O (log2 n + 1)
最坏情况 O(n)
5.二叉排序树总结
5.5.2 平衡二叉树
定义
最核心的知识点是:一定要找到不平衡的结点
要有递归的思想,不平衡的子树转换为平衡,那么整棵树就平衡了
类型
LL
由于在A的左孩子(L)的左子树(L)插入了新结点,导致不平衡
向右旋转
RR
由于在结点A的右孩子(R)的右子树(R)插入了新结点,导致不平衡
向左旋转
LR
由于在A的左孩子(L)的右子树(R)上插入新结点,导致不平衡
先左旋转,后右旋转
注意:为什么A结点没有挂载到CR后面?
因为:这里假设插入的是两个结点,真实环境只会插入一个结点,
也为了编写代码方便,c的右子树A不变,将CR挂载到A上,成为左子树
RL
由于在A的右孩子(R)的左子树(L)上插入新结点,导致不平衡
练习
平衡二叉树的查找效率O (log2 n )
5.5.3 哈夫曼树和哈夫曼编码
哈夫曼树
定义
构造
最小的结点的权值相加得一个空结点,再和最小的权值进行组成,依次加入。
哈夫曼编码
over