字符串的全排列非递归算法是每次都寻找比前序列大一点的序列,如:起点:字典序最小的排列,例如12345终点:字典序最大的排列,例如54321过程:从当前排列生成字典序刚好比它大的下一个排列。算法过程:后找、小大、交换、翻转后找:字符串中最后一个升序的位置i,即S[k]>S[k+1](k>i),S[i]...
分类:
编程语言 时间:
2015-04-11 20:38:52
阅读次数:
184
#include #include#includeusing namespace std;//智二//交换数组中两个元素的位置void swap(int left, int right, int sort[]){ int temp; temp = sort[left]; sort...
分类:
编程语言 时间:
2015-04-05 20:11:23
阅读次数:
120
root指向一棵二叉树的头结点,p和q分别指向该二叉树中任意两个结点的指针,编写算法,找到p和q的最近公共祖先结点r。
为了不失一般性,设p在q的左边。同时,为了编写方便,将以p和q所指结点的值代替p和q本身。根据【后续遍历最后访问根节点,在递归算法中,根是压在栈底的】,很容易想到,采用后序遍历非递归算法:栈中存放二叉树结点的指针。当访问到某结点时,栈中所有的元素都是该结点的祖先。设一个辅助栈,当没...
分类:
其他好文 时间:
2015-04-04 21:18:20
阅读次数:
150
一、题目 要求输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的节点,只能调整树中结点指针的指向。 二叉树结点定义如下:1 struct BinaryTreeNode2 {3 int m_nValue;4 BinaryTreeNode *m...
分类:
编程语言 时间:
2015-03-31 17:19:41
阅读次数:
167
//////UserecursivemethodtoimplementFibonacci/////////staticintFn(intn){if(n46memorywilloverflow}递归算法时间复杂度是O(n2), 空间复杂度也很高的。当然不是最优的。自然我们想到了非递归算法了。一般的实现...
递归与非递归转换的基础知识是能够正确理解三种树的遍历方法:前序,中序和后序,第一篇就是关于这三种遍历方法的递归和非递归算法。如何用栈实现递归与非递归的转换(一)三种遍历树的算法一.为什么要学习递归与非递归的转换的实现方法?1)并不是每一门语言都支持递归的.2)有助于理解递归的本质.3)有助于理解栈,...
分类:
其他好文 时间:
2015-03-13 12:27:37
阅读次数:
133
这里对这个DP问题做了代码实现,分为递归算法(自顶向下)和非递归算法(自下向上),以及拓展的自下向上算法的实现。递归算法: 1 #include 2 3 using namespace std; 4 5 int size = 10; 6 7 inline int max(int a, int ...
分类:
编程语言 时间:
2015-03-11 23:00:20
阅读次数:
277
今天复习了一下二叉树的前序遍历、中序遍历、后序遍历的递归与非递归算法,顺便记录一下://TreeTest.h#include struct TreeNode{ int value; TreeNode* leftChild; TreeNode* rightChild; void...
分类:
编程语言 时间:
2015-03-06 00:58:18
阅读次数:
210
LeetCode 上不会的Reverse IntegerSingle Number II斐波那契数列 非递归算法Maximum Subarray 维持最大值Integer to RomanSort ColorsPopulating Next Right Pointers in Each Node 怎...
分类:
其他好文 时间:
2015-03-05 12:15:22
阅读次数:
161
#include <iostream>
#include <string>
using namespace std;
typedef struct BiTNode
{
int data;
int flag;
BiTNode *lchild,*rchild;
} BTNode,BTree;
//二叉排序树的查找非递归算法
//在二叉...
分类:
其他好文 时间:
2015-02-13 16:47:02
阅读次数:
129