替罪羊树教案资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定理:如果一棵二叉树α权重平衡,那它一定α高度平衡 反之不一定成立
7
替罪羊树(scapegoat tree)的定义:
高度平衡与重量平衡的结合 是一种二叉排序树 根节点存储了树的结点总个数n和上次重建后的结点个数n上次 总能保证宽松的α高度平衡
即h<=hα+1(hα= └log1/ α n┘)
5
3
7
10 19
10 19
9
16 22
α=0.57
9
22
h:3
5 Hα:3
1 16
删除22
1
h:3
5 Hα:2
16
10 22
10
9
9
宽松的α高度平衡
5 删除1
h:3 Hα:2
16
10
9
15
替罪羊树的删除操作
h:3 Hα:2
5Baidu Nhomakorabea
16
10
重建
9
α=0.57
n=4<4.56 满足n<α*n上次
平均:O(log(n))
1)当插入新节点后仍保持α的高度平衡, 则和普通的二叉排序树的插入方法一致。
h:3
Hα:3
8
插入5
h:3 Hα:3
8
6 20
6 20
13 29
5 13 29
10 19 22
10 19 22
α=0.57
α=0.57
10
替罪羊树的插入
α高度平衡:h<=hα(hα=└log1/αn┘) 宽松的α高度衡: h<= hα+1
α权重平衡:n 左<=α*n && n 右<=α*n
2)当插入新节点后打破了α的高度平衡,则要寻找替 罪羊,把以替罪羊为根节点的子树重建成一个新的0.5 权重平衡(即完全二叉树)的二叉排序树
如何寻找替罪羊? 沿着新插入节点的双亲向上找,第一个 不满足α权重平衡的结点即为替罪羊。
11
替罪羊树的插入
h:34
若二叉树排序树的每个结点都满足n 左<=α*n 并且n 右<=α*n 则称它为α权重平衡(AVL)
7
5 36
α=0.6
8 9
不是一棵0.6权重 平衡二叉树
10
7
5
8
3
6
9 10
α 0.6 n7 α*n 4.2 n左 3 n右 3
平衡
0.6 2 1.2 1 1 平衡
0.6 0.6
3
1
1.8 0.6
0
0
替罪羊树
引入替罪羊树的目的
相比普通的二叉树,那些具有平衡功能的二叉树的 节点要花费更多的内存开销,如AVL树存储平衡因 子,红黑树存储颜色。 替罪羊树(除根节点外)无需存储额外的信息,相 比别的平衡树减少了内存开销,并且时间复杂度相 同。
2
替罪羊树
✓引入替罪羊树的目的
➢替罪羊树的定义 替罪羊树的基本操作 总结
2
0
不平衡 平衡
0.6 1 0.6 0 0 平衡
0.6 2 1.2 0 1 平衡
0.6 1 0.6 0 0 平衡
6
特殊情况 当二叉树为0.5权重平衡时
即n 左<=0.5*n 并且 n 右<=0.5*n 则几乎为完全二叉树
证: n-n右-1= n左 0.5n-1 =< n-n右-1 = n左=< 0.5n 则n左≈0.5n n右≈0.5n 树t几乎为完全二叉树
替罪羊树的插入 替罪羊树的删除 替罪羊树的查找
3
两个概念
对于二叉排序树的根结点 1)若满足h<=h α(h α=└log1/ α n┘)则称它为α高度平衡(AVL 红黑树) 2)若满足h<=h α+1,则称它为宽松α高度平衡
5
h α= └ log1/ 0.55 6 ┘ =2
3
7
6
α=0.55
h=3
5
2
8
0
69
所以它是一棵0.6权 重平衡排序树
α=0.6
7
5
2
8
0
6
9
7
α 0.6 0.6 0.6 0.6 0.6 0.6 0.6
n7
2
4
1
2
1
1
α*n 4.2 1.2 2.4 0.6 1.2 0.6 0.6
n左 2 n右 4
平衡
1 0 平衡
2 1 平衡
0 0 平衡
0 1 平衡
0
0
0
0
平衡 平衡
5
α权重平衡
5
3
7
6
α=0.55
8 9
最坏情况:O(log(n))
18
替罪羊树
✓认识几个基本概念 ✓引入替罪羊树的目的
✓替罪羊树的定义 ✓替罪羊树的基本操作 ➢总结
替罪羊树的插入 替罪羊树的删除 替罪羊树的查找
19
总结
1.替罪羊树不同于别的大部分平衡树,它的节点(除根 节点)不用存储额外的信息(例如颜色,平衡度)。 (根节点存储了整个树的节点个数n和上次重建后的结 点个数n上次).从而节约了存储空间。
6
α=0.55
h α= └ log1/ 0.55 6 ┘ =2 h=3
8
满足h<=h α+1
是一棵宽松0.55高度平衡树
9
是一棵替罪羊树
替罪羊树
✓引入替罪羊树的目的
✓替罪羊树的定义 ➢替罪羊树的基本操作 总结
替罪羊树的插入 替罪羊树的删除 替罪羊树的查找
9
替罪羊树的插入
α高度平衡:h<=hα(hα=└log1/αn┘) 宽松的α高度衡: h<= hα+1
不满足h<=h α
8
不是一棵0.55高度平衡树
9 满足h<=h α+1
是一棵宽松0.55高度平衡树
当n一定时 α值越小,二叉树越稠密,插入效率越低,查询效率越高 α值越大,二叉树越稀疏,插入效率越高,查询效率越低
4
α权重平衡
若二叉树排序树的每个结点都满足n 左<=α*n 并且n 右<=α*n 则称它为α权重平衡
α
0.57 0.57 0.57
n
2
4
6
α*n 1.14 2.28 3.42
n左 0
1
1
n右 1
2
4
平衡 平衡 不平衡
12
替罪羊树
✓引入替罪羊树的目的
✓替罪羊树的定义 ➢替罪羊树的基本操作 总结
k替d树罪的羊查树找的插入 k替d树罪的羊插树入的删除 k替d树罪的羊删树除的查找
13
替罪羊树的删除
一般情况下,替罪羊树的删除和普通的二叉排 序树的删除一样。
α高度平衡:h<=hα(hα=└log1/αn┘)
Hα:3
8
替罪羊
宽松的α高度衡: h<= hα+1 α权重平衡:n 左<=α*n && n 右<=α*n
1 13
插入29
10 20
α=0.57 19 22 29
平均:O(log(n))
h:3
8 Hα:3 1 20
13 29
10 19 22
n上次=8
22 20 13
h:2 Hα:2
10
9
16
5 α=0.57
n上次=4 n=4
无论插入还是删除替罪羊树总能保证宽松的α高度平衡
替罪羊树
✓认识几个基本概念 ✓引入替罪羊树的目的
✓替罪羊树的定义 ➢替罪羊树的基本操作 总结
替罪羊树的插入 替罪羊树的删除 替罪羊树的查找
17
替罪羊树的查找
替罪羊树的查找操作和普通的二叉排序树的操作一 样
不过,当每次删除完成后,若n<α*n上次,则整 个树将重建成0.5权重平衡(即完全二叉树)的 二叉排序树。 ( n上次为二叉树上次重建后的结点个数)
14
替罪羊树的删除操作
5
h:3 Hα:3
n上次=n初始=8 当n< α*n上次=0.57*8=4.56时重建
5
1 13
删除13
1
h:3 Hα:3
16
删除19
相关文档
最新文档