斐波拉契数列总结 问题提出: 分别用递归和非递归代码计算斐波拉契数列;比较效率,分析效率差异可能产生的原因。 #include<stdio.h> #include<stdlib.h> //递归实现 int list(int n){ if(n==0||n==1) return 1; else if(n ...
分类:
其他好文 时间:
2019-11-25 09:25:44
阅读次数:
47
关键:利用栈来保存已经搜索到的顶点,利用top来返回上一个顶点。 描述 一个连通图采用邻接表作为存储结构。设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。 输入 多组数据,每组m+2数据行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个整数h ...
分类:
其他好文 时间:
2019-11-23 16:32:10
阅读次数:
192
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 非递归版本: 1.新建一个头结点mergeHead,和尾节点 current. 2.比较两个链表的头节点,确定mergeHead, 将current指向mergeHead. 3.依次比较两个链表节 ...
分类:
编程语言 时间:
2019-11-21 09:23:09
阅读次数:
73
例子:中序遍历非递归算法 实现代码: //中序遍历的非递归算法 int InOrderTraverse_No_DiGui(BiTree T){ BiTree p; //顶底指向二叉树中节点的游标 InitStack(S); //初始化栈 p = T; //p指向所给的二叉树根节点 while(p | ...
分类:
编程语言 时间:
2019-11-13 23:47:32
阅读次数:
76
1.归并排序思想: 以2路归并为例,一个有n个记录的序列可以看作n个长度为1的有序子序列,将其两两合并成n/2(向上取整)个长度为2或1的有序序列,当有奇数个记录时为1,重复归并,直到得到一个长度为n的有序序列。 2.归并排序的复杂度: 递归:时间复杂度O(nlongn),空间复杂度O(n+long ...
分类:
编程语言 时间:
2019-11-03 12:39:10
阅读次数:
62
广义表创建二叉树关于用广义表的形式表示二叉树的形式如下 ①广义表中的一个字母代表一个结点的数据信息。②每个根结点作为由子树构成的表的名字放在义表的前面。③每个结点的左子树与右子树之间用逗号分开。若结点只有右子树面无左子树,则该逗号不能省略。④在整个广义表的末尾加一个特殊符号(如“@”)作为结束标志。 ...
分类:
编程语言 时间:
2019-11-02 20:11:35
阅读次数:
142
递归爆栈了,改了半天非递归的,记录一下 求以某个结点为根的子树中权值大于k的结点的数量 C++ include using namespace std; const int maxn = 1000010; typedef long long ll; int in[maxn], out[maxn], ...
分类:
其他好文 时间:
2019-11-01 20:06:18
阅读次数:
58
算法思想 首先将待查关键字key与根结点关键字t进行比较,如果: 1)key=t,则返回根结点地址; 2)keyt,则进一步查找右子树; 对应的递归算法如下: 对应的非递归算法如下: ...
分类:
编程语言 时间:
2019-10-31 23:39:09
阅读次数:
139
中序遍历的操作如下: 1)中序遍历左子树; 2)访问根节点; 3)中序遍历右子树; 对应的递归算法如下: 对应的非递归算法如下: ...
分类:
其他好文 时间:
2019-10-30 00:05:58
阅读次数:
109
先序遍历的操作如下: 1)访问根节点; 2)先序遍历左子树; 3)先序遍历右子树; 对应的递归算法如下: 对应的非递归算法如下: ...
分类:
其他好文 时间:
2019-10-29 23:46:02
阅读次数:
102