- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、习题
- 四、思考题
- 一、题目描述
- 二、常规方法
- 三、常规方法的比较次数
- 四、方法改进一
- 五、第一次循环的可用信息
- 六、根据第一遍的可用信息作第二次循环
- 七、方法改进一的伪代码
- 八、方法改进一的比较次数
- 九、方法改进二
- 十、方法改进二的比较次数
- 十一、代码
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、练习
- 一、概念
- 二、代码
- 三、习题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、活动选择问题
- 三、贪心策略的基本内容
- 四、哈夫曼编码
- 五、思考题
- 一、定义
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、理解
- 三、改进
- 四、代码
- 五、习题
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
三、练习
14.3-1
LEFT-ROTATE(T, x)
1 y <- right[x]
2 right[x] <- left[y]
3 if left[y] != nil[T]
4 then p[left[y]] <- x
5 p[y] <- p[x]
6 if p[x] = nil[T]
7 then root[T] <- y
8 else if x = left[p[x]]
9 then left[p[x]] <- y
10 else right[p[x]] <- y
11 left[y] <- x
12 p[x] <- y
13 max[y] <- max[x]
14 max[x] <- max(high[int[x]], max[left[x]], max[right[x]])
14.3-2
对二中的程序做三点修改
(1)L37,<改成<=
(2)L40,>改成>=
(3)L443,>=改成>
14.3-3
那本答案 PDF 写得比较麻烦,不明天为什么要写得这么复杂,我只分了三种情况
node* Interval_Tree::Search_Min(node *root, interval i)
{
node *x = root, *y;
//先从左子树上找
if(x->left && x->left->max >= i.low)
{
y = Search_Min(x->left, i);
if(y != nil)
return y;
}
//如果 x 与 i 相交,就不需要找左子树了
if(Overlap(x->inte, i))
return x;
//最后在右子树上找
if(x->right)
return Search_Min(x->right, i);
return nil;
}
14.3-4
void Interval_Tree::Search_All(node *root, interval i)
{
node *x = root, *y;
//如果当前结点与 i 相交
if(Overlap(x->inte, i))
cout<<x->inte.low<<' '<<x->inte.high<<endl;
//先从左子树上找
if(x->left && x->left->max >= i.low)
Search_All(x->left, i);
//从右子树上找
if(x->right && x->key <= i.high)
Search_All(x->right, i);
}
14.3-5
node* Interval_Tree::Search_Exactly(interval i)
{
//从根结点开始
node *x = root;
//不是叶子且不重叠
while(x != nil)
{
if(x->inte.low == i.low && x->inte.high == i.high)
return x;
//在左子树中
if(x->left != nil && x->key >= i.low)
x = x->left;
//在右子树中
else
x = x->right;
}
return nil;
}
14.3-6
14.3-7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论