[置顶] 平衡二叉树

由于平衡二叉树的前提是二叉搜索树,故关于二叉搜索树的内容请移步如下网址:http://blog.csdn.net/qq_30091945/article/details/77720865概念平衡因子:每个结点的平衡因子就是左右子树的高度之差,即可用如下公式表示:BF(T) = Hl-Hr 平衡二叉树:平衡二叉树可能是空树,也有可能是左右子树高度之差小于等于1的树,即平衡因子的绝对值小于等于1。...
阅读(355) 评论(0)

[置顶] 二叉搜索树

关于二叉树的基本操作请转到我的另一篇博客: http://blog.csdn.net/qq_30091945/article/details/77531651概念Binary Search Tree,也可称为二叉搜索树,二叉排序树。 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它...
阅读(256) 评论(0)

[置顶] 并查集

并查集并查集是一种树形结构,又叫“不相交集合”,保持了一组不相交的动态集合,每个集合通过一个代表来识别,代表即集合中的某个成员,通常选择根做这个代表。初始化用数组来建立一个并查集,数组下标代表元素,下标对应的值代表父节点,全部初始化为-1,根节点为一个集合的元素个数,数组的长度为并查集的初始连通分量的个数。并查集要求各集合是不相交的,因此要求x没有在其他集合中出现过。算法如下://构造函数 UF(...
阅读(243) 评论(0)

[置顶] 2014年计算机联考真题——带权路径长度之和

思路如下: 利用层次遍历的思路,记录每层的层数level,对于该层的每个叶节点的带权路径长度 = data*(level-1) 算法如下: //求叶子节点带权路径长度之和 int WPL(BinaryTree* T){ BinaryTree* queue[100]; //构造容量足够大的队列 Binar...
阅读(238) 评论(0)

[置顶] 递归求序列最大最小值

这学期总算开了算法课了,不得不吐槽,大四上学期开这课,时间很尴尬。不多说了,第一节课老师留了道题,要求在一个递归函数里求序列的最大最小值。算法思路: 1)如果数组长度为1,则最大值与最小值相等 2)如果数组长度为2,则最大值与最小值各位其中一个。 3)如果数组长度大于2,那么采用二分策略,递归求前一半的最大最小值,与后一半的最大最小值,之后两两比较后的数组的最大最小值。代码如下:#includ...
阅读(576) 评论(0)

[置顶] 二叉树的构建及其遍历算法

概要二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有先、中、后,层次四种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现先中后3种遍历,则要用栈来模拟实现(递归也是用栈实现的)。下面先简要介绍先中后三种遍历方式的递归实现,再详细介绍先中后三种遍历方式的非递归实现与层次遍历。...
阅读(294) 评论(0)

[置顶] 栈的应用——表达式求值

概要表达式求值问题可以说是一个经典问题。具体思路就是首先把输入的中缀表达式转换为后缀表达式,然后再根据后缀表达式进行计算求值。中缀表达式转换为后缀表达式首先我们设定运算符在进栈前与进栈后的优先级: 首先在栈把“#”进行压栈,并在中缀表达式追加“#”。“#”作为结束标志。 对中缀表达式进行遍历,遇到数字进行输出到后缀表达式中 如果遇到运算符,把栈顶的元素(前者)的栈内优先级与即将入栈元素(后者)的栈外...
阅读(291) 评论(0)

[置顶] 单链表

现在已经进入专业课复习,王道的数据结构复习指导的第一个数据结构虽然是顺序表,但是过于简单,就不想写了。现在复习到链表,首先单链表数其他链表的基础。所以首先把单链表所有基础操作全部写一遍。包括建表,插入,删除,逆序,判断是否为空,合并等。我这里写的是带有头结点的单链表,头结点保存链表长度。代码如下:#include using namespace std;//带头结点的单链表类,...
阅读(345) 评论(0)

[置顶] 2013年计算机联考真题——确定主元

思路: 首先把主元 确定为A[0],并计数cnt=1。之后从下标为1开始遍历数组, 1.如果A[i] == A[0],cnt++ 2.如果不等,则如果cnt>0,cnt–,如果cnt<0,主元设定为A[i],cnt=1。 遍历结束后,再遍历一遍,确定主元的出现的次数,大于n/2,返回主元,否则返回-1代码如下:#include using namespace std;i...
阅读(278) 评论(0)

[置顶] 2011年计算机联考真题——寻找2个序列的中位数

思路: 设定两个升序序列分别为A与B,中位数分别为a和b。 1.如a=b,则即为所求,算法结束。 2.a#include using namespace std;int Median(int* A,int* B,int n) { int s1 = 0 , d1 = n-1, m1 = 0; int s2 = 0 , d2 = n-1, m2 = 0;...
阅读(276) 评论(0)

[置顶] 2010年计算机联考真题——一维数组循环左移

前记从七月份决定开始考研,中间由于听报告,回家复习数学和政治但无论一些时间。自己准备报考山东大学计算机技术的专硕,幸好是数学是考数学二,专业课一直有一门数据结构,这位我的复习节省了很多时间,不想数学一和统考的计算机基础综合的专业复习那么费劲。现在数据结构的复习完全是参照《王道考研系列——2018年数据结构考研复习指导》在复习。对于数据结构虽然到时候是手写算法,但是毕竟这是编程,对于算法能否正确实现并...
阅读(277) 评论(0)
    个人资料
    • 访问:110351次
    • 积分:4380
    • 等级:
    • 排名:第7577名
    • 原创:321篇
    • 转载:0篇
    • 译文:0篇
    • 评论:71条
    博客专栏
    最新评论