参考大神的神作:http://blog.csdn.net/fightforyourdream/article/details/16843303
对于后序遍历,我们理解为将右节点为先的先序遍历翻转,会思考上简单很多,就是用右节点为先的先序遍历做,再用第二个栈进行翻转,就是后序遍历。
{CSDN:CODE:472449}...
分类:
其他好文 时间:
2014-09-21 18:47:50
阅读次数:
190
求解连通性问题,最好用的当然是并查集了,可以使用深搜或者广搜。这道题目的意思是给定一些道路,如果把其中一个顶点去掉,那么需要建立多少条道路才能联通所有顶点。这道题目如果用朴素的并查集的话第四个测试用例会超时,因此想到带路径压缩的并查集。递归或者非递归方式都可以,对于这道题目来说不会差别很大,不过用递...
分类:
其他好文 时间:
2014-09-19 22:19:06
阅读次数:
229
quicksort-recursively-and-non-recursively
分类:
其他好文 时间:
2014-09-18 12:50:33
阅读次数:
241
题目不难,但是容易出错,需要考虑各种边界情况
非递归代码如下:
ListNode *reverseKGroup(ListNode *head, int k) {
if (head == NULL || k <= 1) return head;
ListNode * start = NULL, * end = NULL, *newHead = NULL, *p...
分类:
其他好文 时间:
2014-09-16 19:00:54
阅读次数:
201
链表逆序 代码(C)本文地址: http://blog.csdn.net/caroline_wendy链表逆序, 作为链表操作的基础必须要熟练手写.主要包含3个部分, 一个指针记录后面节点, 一个指针记录前面节点, 把当前节点指到前面节点, 移动到后面节点, 前后指针依次移动.非递归链表逆序算法的核心代码只有10行.代码:/*
* main.cpp
*
* Created on: 2014...
分类:
其他好文 时间:
2014-09-16 12:44:10
阅读次数:
166
先序遍历:
void preOrder(Node *p) //非递归
{
if(!p) return;
stack s;
Node *t;
s.push(p);
while(!s.empty())
{
t=s.top();
printf("%d\n",t->data);
s.pop();
if(t->ri...
分类:
其他好文 时间:
2014-09-15 19:36:09
阅读次数:
152
第 19 题(数组、递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项。思路:递归和非递归的 下面的代码有个问题,没有考虑大数越界。返回值应该设成long long型的递归速度非常慢/...
分类:
其他好文 时间:
2014-09-15 14:11:38
阅读次数:
194
归并排序分析:
最优时间复杂度:O(n)
最坏时间复杂度:O(nlog2n)
平均时间复杂度:O(nlog2n)
最差空间复杂度:O(n)
稳定性:稳定
归并排序C语言实现 递归与非递归...
分类:
其他好文 时间:
2014-09-15 12:57:28
阅读次数:
140
最大公约数,根据《编程之美》递归版写的非递归版:1. 对于y和x来说,如果y=k*y1, x = k * x1。那么有gcd(y,x)=k*gcd(y1, x1);2. 如果x=p*x1, p是素数(质数),并且y%p != 0,那么gcd(x, y) = gcd(p * x1, y) = gcd(...
分类:
其他好文 时间:
2014-09-15 12:54:18
阅读次数:
129
定义链表结构struct ListNode{ int val; ListNode *next; ListNode(int v) : val(v), next(NULL) {}};非递归反转单链表ListNode* reverse(ListNode *root){ if (ro...
分类:
其他好文 时间:
2014-09-12 23:21:44
阅读次数:
235