先是中序遍历
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
clas...
分类:
其他好文 时间:
2015-01-21 22:30:18
阅读次数:
211
1 void postOrder3(BinTree *root) //非递归后序遍历 2 { 3 stack s; 4 BinTree *cur; //当前结点 5 BinTree *pre=NULL; ...
分类:
其他好文 时间:
2015-01-20 08:56:05
阅读次数:
243
原题地址递归写法谁都会,看看非递归写法。对于二叉树的前序和中序遍历的非递归写法都很简单,只需要一个最普通的栈即可实现,唯独后续遍历有点麻烦,如果不借助额外变量没法记住究竟遍历了几个儿子。所以,最直接的想法就是在栈中记录到底遍历了几个儿子。代码: 1 vector postorderTraversal...
分类:
其他好文 时间:
2015-01-19 18:40:29
阅读次数:
116
C语言非递归实现二叉树的先序、中序、后序、层序遍历代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 //*****二叉树的二叉链表存储表示*****// ...
分类:
编程语言 时间:
2015-01-18 20:56:12
阅读次数:
332
一、递归函数,通俗的说就是函数本身自己调用自己...如:n!=n(n-1)!你定义函数f(n)=nf(n-1)而f(n-1)又是这个定义的函数。。这就是递归二、为什么要用递归:递归的目的是简化程序设计,使程序易读三、递归的弊端:尽管非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是添加了系统...
分类:
编程语言 时间:
2015-01-18 18:30:25
阅读次数:
230
二叉树的非递归遍历:
中序遍历非递归遍历算法
非递归算法实现的基本思路:使用堆栈:...
分类:
其他好文 时间:
2015-01-18 13:13:54
阅读次数:
189
题目描述:
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)
输入:
输入包括一个整数N,(1
输出:
可能有多组测试数据,对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。
样例输入:
4
样例输出:
5
分析:第n阶台阶的方法等于上到第n-1阶台阶的方法加上第n-2阶的台阶的方法之和,因为89...
分类:
其他好文 时间:
2015-01-15 22:04:26
阅读次数:
126
二叉树的创建及遍历是很多二叉树问题的基础,递归遍历逻辑清晰,代码简约漂亮,然则效率低下(所有递归方案的通病,非不得已不用递归);非递归遍历高效,却不是能信手写出来的,特别是后续非递归遍历,相信很多资深码工也有这样的经历:5年前学习了二叉树的非递归遍历,一个月前复习了并达到能熟练写出的程度,在不参.....
分类:
其他好文 时间:
2015-01-15 21:45:57
阅读次数:
185
题目:
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
Calling next() will return the next smallest number in the BST.
Note:...
分类:
编程语言 时间:
2015-01-14 18:01:28
阅读次数:
182
红黑树是建立在二叉查找树的基础之上的,关于二叉查找树可以参看【算法导论】二叉搜索树的插入和删除和【算法导论】二叉树的前中后序非递归遍历实现。对于高度为h的二叉查找树而言,它的SEARCH、INSERT、DELETE、MINIMUM、MAXIMUM等操作的时间复杂度均为O(h)。所以在二叉查找树的高度较高时,上述操作会比较费时,而红黑树就可以解决这种问题。...
分类:
编程语言 时间:
2015-01-14 12:49:51
阅读次数:
1480