- 博客(6)
- 收藏
- 关注
原创 哈弗曼树的构建过程及编码
一,哈弗曼树的构建过程哈夫曼树的定义一棵二叉树要使其带权路径长度越小,权值越大的结点越接近树的根结点,而权值越小的结点越远离树的根结点。其基本思想是:(1)初始化:由给定的n个权值{w1,w2,…,wn}构成n棵只有一个根结点二叉树,从而得到一个二叉树集合F={T1,T2,…,Tn},其中每一棵二叉树Ti中都只有一个权为wi的根结点,其左、右子树为空。(2)选取与合并:在F中选出两棵根结点...
2018-11-28 00:33:08
1479
2
原创 树,森林,二叉树之间相互转换的方法
一,森林转换为二叉树森林是若干树的集合,将森林中的每棵树转化为二叉树,再将每棵树的结点视为兄弟,这样,森林也同样可以转换为二叉树。具体方法如下:(1)将森林中的每棵树转化为二叉树。(2)从第二棵二叉树开始,依次把后一棵树的根结点作为前一棵二叉树根结点的右孩子,当所有二叉树连起来后,此时所得到的二叉树就是由森林转换得到的二叉树。下图给出了森林转换为二叉树的过程二,二叉树转换为森林是树转...
2018-11-27 23:57:12
2355
原创 二叉树的存储结构的
遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。一,前序遍历前序遍历(DLR),是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。二叉树前序遍历递归算法:二,中序遍历中...
2018-10-25 23:52:54
233
原创 栈的链接存储结构及实现
1.链栈的实现栈的链接存储结构——链栈链栈的结点结构可以复用单链表的结点结构。将栈的抽象数据类型定义在链栈存储结构下用C++中的类实现。(1)入栈操作链栈的插入操作只需处理栈顶即第一个位置的情况,而无需考虑其他位置的情况,其算法如下所示:(2)出栈操作链栈的删除操作只需处理栈顶即第一个位置的情况,而无需考虑其他位置的情况,其算法如下所示:...
2018-10-25 22:43:27
950
原创 单链表的删除算法Delete
1.删除操作删除操作是将单链表的第i个结点删除。因为在单链表中结点ai的存储地址在其前驱结点ai-1的指针域中,所以必须首先找到ai-1的存储地址p,然后令p的next的域指向ai的后继结点,即把结点ai从链上摘下,最后释放结点ai的存储空间。算法用伪代码描述如下:2.删除算法的时间主要消耗在查找正确的删除位置上,故时间复杂度亦为O(n)。单链表删除算法的C++描述如下:...
2018-10-25 22:20:31
7327
原创 栈的链接存储结构及实现
#顺序栈——栈的顺序存储结构1.通常链栈用单链表表示,因此其结点结构与单链表的结点结构相同。顺序栈本质上是顺序表的简化,唯一需要确定的是用数组的哪一端表示栈底。栈操作的示意图:2.顺序栈的实现将栈的抽象数据类型定义在顺序栈存储结构下用C++中的类实现。(1)入栈操作在栈中插入一个元素X只需将栈顶指针top加1,然后在top指向的位置填入元素X,算法如下:(2)出栈操作删除栈顶...
2018-10-25 21:57:28
828
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人