1.二叉排序树的概念:二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树, 或者是一棵具有例如以下性质的二叉树: ⑴ 若它的左子树非空,则左子树上全部结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上全部结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树...
分类:
其他好文 时间:
2014-07-11 11:26:27
阅读次数:
159
第一步:配置AndroidManifest.xml,在application结点下面添加如下代码 同样配置AndroidManifest.xml,添加权限 第二步:注册广播IntentFilter filter = new ...
分类:
移动开发 时间:
2014-07-09 16:02:08
阅读次数:
282
二叉排序树(Binary Sort Tree):或者是一颗空树,或者是具有以下性质的树:(1)若它的左子树不空,则左子树上所以结点的值均小于它的根节点的值;(2)若它的右子树不空,则右子树上的所以结点的值均大于它的根节点的值;(3)它的左、右子树也分别是二叉排序树。
二叉排序树的基本操作均可以在O(h)时间内完成(算法导论p165)。
相关操作代码如下:
int InsertBST(BiTr...
分类:
其他好文 时间:
2014-07-09 13:12:09
阅读次数:
160
引言:
单链表存在一个问题,当我们想要访问某个结点的前一个结点时,要从头结点开始访问。显然这样的操作是令人烦躁的。为此,双向链表出现,它比单链表多出了一个指针域,指向前一个结点。这样,对于双向链表,就可以方便的从后向前遍历链表了。但多出的问题是对于插入和删除结点的开销要增加一倍。
分析描述:
双向链表存储结构图为:,用结构体表示如下:
...
分类:
其他好文 时间:
2014-07-09 11:44:17
阅读次数:
189
HDU 4850 Wow! Such String!
题目链接
题意:求50W内的字符串,要求长度大于等于4的子串,只出现一次
思路:需要推理,考虑4个字母的字符串,一共有26^4种,这些由这些字符串,如果一个字符串末尾加上一个字符,可以变成另一个字符串的话,就当作这有一条边,每多一个字符多一个结点,那么对于这道题目,一共就能有26^4 + 3条边,在加上尾巴可以多放3个,一共是...
分类:
其他好文 时间:
2014-07-09 09:53:06
阅读次数:
180
双向广搜(2011-08-31 16:45:24)Eight题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043讲到双向广搜,那就不能不讲经典的八数码问题,有人说不做此题人生不完整 。所谓双向广搜,就是初始结点向目标结点和目标结点向初始结点同时扩展,...
分类:
其他好文 时间:
2014-07-08 22:39:42
阅读次数:
422
这题建图没什么特别
x个条件:Sb-Sa
y个条件:Sa-Sb
题目问的是,1和n之间的关系。
有负环的话,整个就不可能成立,输出-1
如果图是连通的(1到n是连通的),就输出d[n]
不连通就是题目中说-2的情况。
原来我们建图一般添加一个附加结点,或者开始就把所有点入队,就是考虑到不连通的问题,所以添加一个没有意义的条件。
#include
#include ...
分类:
其他好文 时间:
2014-07-08 20:26:26
阅读次数:
207
回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需解的活结点...
分类:
其他好文 时间:
2014-07-08 16:53:41
阅读次数:
256
通常我们所说的删除链表的某个结点,是彻底删除该结点的空间,而要这么做就必须知道其前驱结点。这里的想法是,链表中存储的val是同类型的,只要将该结点的val内容删除就可以了。那么就可以用该结点的后继结点的值覆盖当前结点,然后删除其后继结点,而对于其后继结点而言,该结点就是前驱。
这里只需要考虑当前删除的结点是否为last node 就可以了,至于是否是头结点,这种情况是可以归为同一种情况的,只是参...
分类:
其他好文 时间:
2014-07-08 13:58:04
阅读次数:
197
#include<iostream>
usingnamespacestd;
structnode{
intd;
structnode*next;
};//定义结点
node*build1()//头插法构造单链表
{
node*p;//指向新建结点
node*head;//头指针
head=NULL;
p=head;
intx;
cin>>x;
while(x!=-1)
{
p=newnode;
p->d=x;
p-&g..
分类:
其他好文 时间:
2014-07-08 09:06:06
阅读次数:
220