自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 第15章 动态规划

一: 分治算法和动态规划的区别: 分治算法将问题分为互不相交的子问题,递归地求解子问题,然后再将它们的解组合起来,以求出原问题的解。 动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。 如果用分治算法来求解重叠子问题的情况,分治算法会做许多不必要的工作,因为它会反复求解那些公共子子问题。而动态规划算法对每个子问题只求解一次,将解保存在一个表格中,如果随后再次需要此子问题的解,只需查找

2016-03-21 14:32:55 484

原创 第14章 数据结构扩张 区间树部分代码

下面给出了区间类定义,区间树类的结点结构,左旋,右旋,恢复插入引起的红黑树性质破坏,插入,恢复删除引起的红黑树性质破坏,删除,寻找重叠区间,寻找重叠区间但具有最小低端点,寻找重叠区间但具有最大低端点这一系列操作的代码。区间类定义:class interval{ public: interval(const int& l=int(),const int& h=int()):lowEnd

2016-03-14 23:11:01 469

原创 第十四章 数据结构扩张 动态顺序统计部分代码

在这一章中,动态顺序统计和区间树被举例用来显示怎样去扩张一个数据结构。一般来说,扩张一个数据结构分为以下四个步骤: 选择一种基础数据结构; 确定基础数据结构中要维护的附加信息; 检验基础数据结构上的基本修改操作能否维护附加信息; 设计一些新操作。 当然设计一个数据结构的扩张,没有那么顺利,永远包含着试探和纠错。下面给出基于红黑树的动态顺序统计和区间树的代码。动态顺序统计:下面代码给出了左旋,右旋,恢

2016-03-14 22:40:38 333

原创 第13章部分习题答案

思考题13-1。其五个小问a,b,c,d,e答案如下:a: 当插入一个关键词时,从根到新插入结点x路径上的所有结点都需要被改变,因为这个新插入结点x的地址值需要赋值给一个结点的孩子指针,那么这个结点需要被新建,同样,也需要孩子结点指向这个新节点,以此类推,一直到根。 当删除一个结点时,如果这个要被删除的结点z最多只有一个孩子,那么这个要被删除结点z的所有祖先均需要被改变。否则的话找到这个要被删除结点

2016-03-12 01:07:06 587

原创 第13章 红黑树代码

红黑树本质是二叉搜索树,只是它有如下的额外条件 每个结点要么为红色要么为黑色; 根节点是黑色的 ; NULL结点是黑色的; 如果一个结点是红色的,那么它的两个子节点都是黑色的; 对每个结点,从该结点到其所有后代叶节点的简单路径上,均包含相同数目的黑色结点。 之所以要有如下的额外条件,是为了保证树高为O(lgn)。因为在普通二叉搜索树中,树高为O(n),而不是O(lgn)。下面给出了结点左旋,结点右旋

2016-03-10 20:18:48 313

原创 第12章:二叉搜索树部分答案:

12.1-2: 在二叉搜索树中,一个结点的关键字要大于等于其左孩子的关键字,小于等于其右孩子的关键字。但在最小堆中,结点的关键字只要小于等于其左右孩子的关键字即可。 不可以。因为在最小堆中,它只告诉你结点的关键字要小于其左右孩子的关键字,但并没有告诉你左右孩子结点的关键字谁大,因此无法像二叉查找树那样,按序输出元素。再说,如果最小堆能够在的时间O(n)O(n)的时间内按序输出一个元素,又由于最小堆的

2016-03-06 14:29:29 617

原创 第12章:二叉搜索树代码:

这章主要讲了二叉查找树及其相关性质。二叉搜索树的结点结构,插入,搜索,删除,结点后继,结点前驱,遍历代码如下。结点结构:struct node{ Type element;//存储的关键字 node* parent;//母结点 node* left;//左孩子结点 node

2016-03-06 00:06:33 360

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除