我们都知道,对二叉树进行递归遍历非常简单,但递归算法需要额外的栈机制来存储每次递归的值。既然递归算法内部使用栈实现的,那么我们也可以借助于栈来实现二叉树的非递归遍历。下面我们将讲解利用非递归实现二叉树的前序、中序和后序遍历。
1、非递归二叉树前序遍历:
我们知道,二叉树的前序遍历对节点的访问顺序是根节点、左子节点然后右自节点。根据其访问顺序我们可以很容易用栈来实现。具体实现思路如下:
1、遍...
分类:
其他好文 时间:
2014-12-09 09:27:18
阅读次数:
189
想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法。
下面提供两种实现方式,其中代码注释的很清楚。
关于动态规划的基本原理,参考:
http://www.cnblogs.com/sdjl/articles/1274312.html...
分类:
其他好文 时间:
2014-12-08 17:59:14
阅读次数:
275
1.递归
function fib(n){
if(n==1||n==2){
return 1;
}
return fbnq(n-1)+fbnq(n-2);
}
fbnq(10);
//55
2.非递归
var res=[1,1];
function fb(n){
for(var i=2;i<n;i++){
res[i] = res[i-1] + r...
分类:
Web程序 时间:
2014-12-08 09:18:22
阅读次数:
162
二叉树的遍历是二叉树中最最基础的部分。这里整理二叉树不用递归实现三种顺序遍历的方式。不用递归的话,一般需要栈来完成。当然线索二叉树(不需要栈或递归)也可以完成中序遍历,这种方式在这篇文章中已经讨论过。这里着重讨论使用栈的实现方式。中序遍历(1) 双while,第二个内层while是为了不断压入lef...
分类:
其他好文 时间:
2014-12-08 02:03:20
阅读次数:
233
二叉树的前序建立递归算法以及前中后序遍历的递归算法已经是人尽皆知了,递归算法也确实为代码的编写带来了很大的方便。然而,有时我们也确实需要它们的非递归算法。将递归算法转化为非递归算法可以帮助我们深入了解函数的调用与栈的原理。这里总结一下二叉树的这些重要的非递归算法。...
分类:
编程语言 时间:
2014-12-07 12:39:23
阅读次数:
210
package tree.binarytree;
import java.util.Stack;
/**
* 二叉树后序遍历的递归与非递归实现
*
* @author wl
*
*/
public class BitreePostOrder {
// 后序遍历的递归实现
public static void biTreePostOrderByRecursion(BiTreeN...
分类:
编程语言 时间:
2014-12-06 08:55:25
阅读次数:
283
package tree.binarytree;
import java.util.Stack;
/**
* 二叉树的中序遍历:递归与非递归实现
*
* @author wl
*
*/
public class BiTreeInOrder {
// 中序遍历的递归实现
public static void biTreeInOrderByRecursion(BiTreeNode...
分类:
编程语言 时间:
2014-12-05 22:49:54
阅读次数:
199
递归遍历目录的缺点:遇到多层级目录时,层级越多,堆栈的负荷越大。
[java] view
plaincopyprint?
import java.io.File;
import java.util.LinkedList;
/*
* 采用非递归方式遍历目录及其子目录的文件
*/
public class Proce...
分类:
其他好文 时间:
2014-12-04 14:00:23
阅读次数:
147
之前在学习二叉查找树时按照递归方式实现了二叉查找树:http://www.cnblogs.com/elvalad/p/4129650.html在实际应用中由于递归的深度和性能等问题会要求使用非递归方式实现二叉查找树的search操作,这里用循环的方式实现put,get,min和max操作。二叉查找树...
分类:
其他好文 时间:
2014-12-04 00:45:00
阅读次数:
255