原题链接:https://oj.leetcode.com/problems/binary-tree-inorder-traversal/
题目大意:中序遍历二叉树
解题思路:中序遍历二叉树,中序遍历二叉树的左子树,访问根结点,中序遍历二叉树的右子树。非递归实现时,用一个栈模拟遍历过程即可。因为需要先遍历左子树,所以每个结点先入栈,出栈时访问。
vector inorderTraversal(...
分类:
其他好文 时间:
2014-12-16 11:53:51
阅读次数:
172
原题链接:https://oj.leetcode.com/problems/binary-tree-postorder-traversal/
题目大意:后序遍历二叉树
解题思路:后序遍历二叉树的步骤:后序遍历二叉树的左子树,后序遍历二叉树的右子树,访问根结点。非递归实现时,用一个栈模拟遍历过程。由于访问完左子树后访问右子树,栈中元素要起到转向访问其右子树的作用,但是不能像先序和中序遍历那样出栈...
分类:
其他好文 时间:
2014-12-16 11:53:41
阅读次数:
183
题目:输入一个链表,输出链表中倒数第k个节点,为了符合大多数人的习惯,本题从1开始计数,即链表的尾巴节点是倒数第一个节点。方法1:先遍历链表得到链表的个数n,倒数第k个节点就是n-k+1再遍历一次链表,找到第n-k+1个节点就是倒数第k个节点;这种方法遍历两次链表;方法2:先遍历链表把链表压入一个栈...
分类:
编程语言 时间:
2014-12-16 11:39:02
阅读次数:
194
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外的...
分类:
编程语言 时间:
2014-12-14 13:18:31
阅读次数:
227
※函数的调用方式EBP:扩展基址指针寄存器(extended base pointer) 其内存放一个指针,该指针指向系统栈最上面一个栈帧的底部。ESP:(Extended stack pointer)是指针寄存器的一种,用于指向栈的栈顶。_cdecl:C/C++默认的调用方式,调用方平衡栈,不定参...
分类:
编程语言 时间:
2014-12-11 23:45:51
阅读次数:
404
题目大意:如上图所示,已知火车要从A入站,然后从C出站。火车进站的
顺序为1~N,现在给你出站的顺序。问:能不能通过站台改变火车出站顺序
来实现按所给顺序出站。
思路:把站台看做是一个栈,按1~N的顺序遍历火车原先顺序,先入栈,如
果栈顶的火车编号和所给出站顺序将要出站的编号一样。那么火车就出栈,
直到栈里边所有满足出站顺序的火车都出站,否则就一直入栈。最后判断所
有火车是否都出站了。若都出站,输出Yes,否则输出No。...
分类:
其他好文 时间:
2014-12-09 19:39:05
阅读次数:
212
题目:用两个队列实现一个栈
算法思路:
现有两个队列q1与q2,入栈:如果q1与q2都为空,那么我们选择q1入栈也就是入队列,比如q1入栈 1 2 3 4 ;现在要出栈,后进先出那么4要出栈。但是q1是一个
队列,先进先出,那么 1 2 3出队列 q2 1 2 3 入队列,q1中此时剩余4,把4出对列达到出栈的效果。 这个时候如果我们又加入一个元素5,那么我们应该把5放到
q1还是q2,...
分类:
编程语言 时间:
2014-12-09 12:23:45
阅读次数:
221
算法思路:
一个栈用来入队列,一个栈用来出队列:
现有两个栈s1 和s2;s1用来入栈,比如 队列进入 1 2 3 4 5 那么s1进栈 1 2 3 4 5 ,现在要出队列,意思就是要1先出来;
那么我们把栈s1的数据取出来都压到栈s2当中,那么栈s2就是 5 4 3 2 1 ;s2再出栈,此时1出栈就模拟出出队列的效果;
编写代码:
// QueueFrom2Stack.cp...
分类:
编程语言 时间:
2014-12-08 19:40:39
阅读次数:
215
3.5 实现一个MyQueue类,该类用两个栈来实现一个队列。解答队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列如果第二个栈不为空,则直接从第二个栈出队列,否则将第一个栈的数据依次压入第二个栈,然后出栈...
分类:
其他好文 时间:
2014-12-04 21:25:24
阅读次数:
168
3.1 描述如何只用一个数组来实现三个栈。解答我们可以很容易地用一个数组来实现一个栈,压栈就往数组里插入值,栈顶指针加1; 出栈就直接将栈顶指针减1;取栈顶值就把栈顶指针指向的单元的值返回; 判断是否为空就直接看栈顶指针是否为-1。如果要在一个数组里实现3个栈,可以将该数组分为3个部分。如果我们并不...
分类:
其他好文 时间:
2014-12-04 11:51:01
阅读次数:
153