1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被 ...
分类:
编程语言 时间:
2017-05-13 21:03:44
阅读次数:
556
前言 使用递归(Recursion)建立二叉树(Binary Tree)的非顺序存储结构(即二叉链表),可以简化算法编写的复杂程度,但是递归效率低,而且容易导致堆栈溢出,因而很有必要使用非递归算法。 引入 无论是单链表还是二叉树,创建时要解决问题就是关系的建立,即单链表中前驱节点与当前节点的关系和二 ...
分类:
其他好文 时间:
2017-05-09 01:00:59
阅读次数:
372
二叉树的中序遍历 给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 标签 递归 二叉树 二叉树遍历 1 /** 2 * Definition of TreeNode: 3 * class TreeN ...
分类:
其他好文 时间:
2017-05-02 19:43:22
阅读次数:
185
1、二叉树定义: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTr ...
分类:
编程语言 时间:
2017-04-29 14:18:56
阅读次数:
224
本博客不再更新,很多其它精彩内容请訪问我的独立博客 1.折半查找的非递归算法 int BinarySearch(SeqList &L,DataType x) { int high=L.n-1,low=0,mid; while(low<=high){ mid=(low+high)/2; if(x.ke ...
分类:
其他好文 时间:
2017-04-23 10:50:45
阅读次数:
142
前面我们介绍了全排列的非递归算法,现在我再来写一下全排列的递归算法: 这两种算法的算法思路并不相同。递归算法的思路比较接近于我们现实生活中的思路。 1.试想,我们只有两个数字:12.要对它进行全排列,第一种方式就是12本身,第二种,将12交换,变为21即可。这提示了我们一种交换的思路。 2.但这概括 ...
分类:
其他好文 时间:
2017-04-21 19:03:27
阅读次数:
206
把递归算法转化为非递归算法, 有如下两种基本方法:1)通过分析, 用迭代的方式自底向上. 有时需用栈保存参数2)模拟函数调用过程, 用栈保存入参 尾递归: 一个函数只在return处调用自身。很多编译器就能将其转换为迭代 更通用点的伪代码: 注: 如果递归子函数都在一起且在递归母函数程序的末尾,则无 ...
分类:
其他好文 时间:
2017-04-14 09:59:40
阅读次数:
142
1、前言 普通二叉树仅仅能找到结点的左右孩子信息。而该结点的直接前驱和直接后继仅仅能在遍历过程中获得。 若可将遍历后相应的有关前驱和后继预存起来,则从第一个结点開始就能非常快“顺藤摸瓜”而遍历整个树了。 二叉线索树思想是干什么的? 中序遍历这棵树 》转换成链表訪问 2线索化思想 结论:线索化过程就是 ...
分类:
其他好文 时间:
2017-04-12 18:34:02
阅读次数:
208
1. 递归算法与非递归算法实现二叉树的遍历 NOT BUG FREE 1 public class BiTree{ 2 private BiTreeNode root; 3 public BiTree(){ 4 this.root = null; 5 } 6 public BiTree(BiTree ...
分类:
其他好文 时间:
2017-04-09 11:46:33
阅读次数:
137
由于递归算法使用系统堆栈,性能较差,所以应尽可能使用非递归算法。 1.先序遍历 先序遍历,即得到节点时输出数据。 输出 a b d c e f 2.中序遍历 中序遍历也即等到所有左分支都遍历完成后,才开始输出。 输出 b d a c f e 3.后序遍历 也即等到左右分支都遍历完成后,才开始输出。 ...
分类:
编程语言 时间:
2017-04-08 00:30:12
阅读次数:
244