看到一个非递归交换一个二叉树的左右孩子的位置,于是想实现之,才发现非递归的先中后序遍历都忘记了……于是杂七杂八的写了一些,抄抄资料就实现了,然后实现非递归交换两个孩子的位置还是相当容易的。
分类:
其他好文 时间:
2014-07-23 18:04:35
阅读次数:
292
递归实现当然太简单,也用不着为了ac走这样的捷径吧。。非递归实现还挺有意思的。树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来。对于中序遍历,先要訪问最左下的节点,一定是进入循环后,不断的往左下走,走到不能走为止,这时候,能够从栈中弹出訪问的节点,相当于“左根右”过程的“根”,然后...
分类:
其他好文 时间:
2014-07-22 23:39:17
阅读次数:
296
扩展欧几里得算法就是求: ax + by = gcd(a, b)的一组整数解(x, y)一、非递归的实现:首先看a = 60, b = 22的情况:表格左边是欧几里得算法,右边等式计算ax + by = gcd(a, b)的解a = 2 × b + 1616 = a - 2bb = 1× ...
分类:
其他好文 时间:
2014-07-21 09:35:19
阅读次数:
290
数的计算——(递归(超时)和非递归)时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:1050 测试通过:312描述要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n 2 using namespace std...
分类:
其他好文 时间:
2014-07-21 09:12:46
阅读次数:
235
dfs 栈溢出,bfs超时,用dfs非递归就不溢出了,前后写了1一个星期class node{ int i; int j; public node(int i1,int j1) { i=i1; j=j1; ...
分类:
其他好文 时间:
2014-07-20 22:32:17
阅读次数:
244
1,什么是栈溢出?由于栈一般默觉得1-2m,一旦出现死循环或者是大量的递归调用,在不断的压栈过程中,造成栈容量超过1m而导致溢出。2,解决方式:方法一:用栈把递归转换成非递归通常,一个函数在调用还有一个函数之前,要作例如以下的事情:a)将实在參数,返回地址等信息传递给被调用函数保存; b)为被调用函...
分类:
其他好文 时间:
2014-07-19 23:03:17
阅读次数:
205
#include #include using namespace std;typedef struct Node{ Node* lchild; Node* rchild; int data;}BNode,BTree;void visit(Node*);void inorder(B...
分类:
其他好文 时间:
2014-07-19 19:26:40
阅读次数:
226
本文中非递归遍历二叉树的思想和代码都来自这里(http://jianshu.io/p/49c8cfd07410#)。我认为其思想和代码都足够优雅动人了,于是稍作整理,得到如下的程序。以上三种遍历实现代码行数一模一样,如同递归遍历一样,只有三行核心代码的先后顺序有区别。用原作者的话解释就是:"得以统一...
分类:
其他好文 时间:
2014-07-18 19:12:44
阅读次数:
280
以下是二叉搜索树中查找、插入、删除的递归和非递归算法数据类型设计:1 struct BSTNode 2 {3 ElementType data; // 结点元素值4 struct Node *leftChild; // 左子树根结点5 ...
分类:
其他好文 时间:
2014-07-18 19:05:40
阅读次数:
279
1 /** 2 * 二叉树的前序、中序、后序遍历的递归和非递归算法实现 3 **/ 4 5 //二叉链表存储 6 struct BTNode 7 { 8 struct BTNode *LChild; // 指向左孩子指针 9 ELEMENTTYPE ...
分类:
其他好文 时间:
2014-07-17 00:00:56
阅读次数:
241