用递归遍历的优点是算法简单明了,缺点也十分明显:对于栈的消耗比较大。尤其是在嵌入式应用中,嵌入式处理器资源往往有限。每次递归调用,都会涉及到通用寄存器、SP指针、PC指针等的压栈。当树的深度比较大时,对于栈的消耗会变得非常严重,很有可能造成栈的溢出。
因此,二叉树的非递归遍历方法就显得非常有实际应用价值。下面是非递归遍历的算法,这里使用了数据结构栈,利用其先进后出的特点,用结点入栈出栈过程手工模拟递归调用过程中的栈操作。...
分类:
编程语言 时间:
2015-03-21 09:53:45
阅读次数:
264
目录-=-讲解对象创建过程中,-=-堆内存和栈内存的情况-=-构造函数对类对象的成员变量的初始化过程-=-构造函数出栈-=-类的方法在不访问类对象的成员变量时造成的内存资源浪费怎么解决?-=-引出static方法扯淡--明确概念:-=-类:是对现实事物的抽象描述;举例:人,有年龄,姓名,高矮胖瘦等特...
分类:
其他好文 时间:
2015-03-20 09:09:27
阅读次数:
114
目录-=-讲解对象创建过程中,-=-堆内存和栈内存的情况-=-构造函数对类对象的成员变量的初始化过程-=-构造函数出栈-=-类的方法在不访问类对象的成员变量时造成的内存资源浪费怎么解决?-=-引出static方法扯淡--明确概念:-=-类:是对现实事物的抽象描述;举例:人,有年龄,姓名,高矮胖瘦等特...
分类:
其他好文 时间:
2015-03-19 20:17:29
阅读次数:
200
UVa514 Rails(铁轨)题目:铁轨题目链接: UVa514链接题目描述:某城市有一个火车站,有n节车厢从A方向驶入车站,按进站的顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶入车站。例如,出栈顺序(5 4 1 2 3)是不可能的,但是(5 4 3 2 1)...
分类:
其他好文 时间:
2015-03-16 16:17:23
阅读次数:
104
Given a binary tree, return theinordertraversal of its nodes' values.和preorder是一样的,把左子节点一直压入到栈中,直到没有左子节点为止,然后出栈访问,存储右子节点。 1 vector inorderTraversal(Tr...
分类:
其他好文 时间:
2015-03-15 00:42:02
阅读次数:
111
官方定义是这样的:栈(Stack)是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。 栈是一种重要的线性结构,可以这样讲,栈是线性表的一种具体表现形式,但是它在操作上有一些特殊的要求和限制: --栈的元素必须“先进后出” --栈的操作只能在这个线性表的表尾进行。 ...
分类:
其他好文 时间:
2015-03-13 20:17:13
阅读次数:
116
#include extern "C"{#include "lua-5.2.2/src/lauxlib.h"#include "lua-5.2.2/src/lualib.h"#include "lua-5.2.2/src/lstate.h"}//lua与c交互栈的索引,假如栈中有5个元素//5 -1...
分类:
其他好文 时间:
2015-03-08 21:24:15
阅读次数:
209
这题也不难,模拟一下栈,若搜到字符为+-则弹出栈顶,若搜到字符为*/且不为+-则弹出栈顶,然后把搜到的操作字符压入栈顶,字母就输出。#include#includechar s[500],symbol[500];int num[500],i,j,t,r;int main(){ int t; ...
分类:
其他好文 时间:
2015-02-22 20:37:47
阅读次数:
174
递归定义很简单,效率当然很低下,且极易超出栈空间大小,这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义。1 def fib(x):2 return fib(x-1) + fib(x-2) if x - 2 > 0 else 1
分类:
其他好文 时间:
2015-02-18 06:10:22
阅读次数:
239
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS、IP寄存器没有出栈和入栈指令,所以只能引发一次中断,自动将CS、IP寄存器压入堆栈,再利用中断返回,将新任务的任务断点指针弹出到CPU的C....
分类:
其他好文 时间:
2015-02-14 14:56:02
阅读次数:
351