摘要:
上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇,题目2) 题目3 这一题,乍一看和之前题目间明显的区别是什么呢?没错,聪明的你可能已经想到了,子函数要和父函数通信了,子函数需要告诉父函数a或b在不在自己这里,自己有没有找到a或b。 如果我们把二叉树的每个节点都抽象成一个 阅读全文
摘要:
上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇) 题目2 题目2和题目1最大的不同点是访问顺序变了。 我们对应的伪代码应该如下: 1,2,3表示的是先递归读取左子树,再是右子树,最后读取自己 void postOrderRead(BiTree tree){ if(tre 阅读全文
摘要:
上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(函数调用底层篇) 2.用基础知识实现递归转栈式访问 基于以上几点,我们怎么把所有的递归都用栈这个数据结构实现呢? 想必聪明的你已经有想法了吧! 例题 : (请先自己思考尝试一下怎么实现) 先给出二叉树节点定义 : typedef str 阅读全文
摘要:
重大错误说明 : 栈顶的指针始终是指向最后一个入栈元素的位置的,不是最后一个入栈元素的位置上面!请读者留意 (PS : 后来又看了一下,好像也不是什么大问题...) 上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(基础知识篇) 2.函数调用底层篇(了解递归调用的硬件实现) 一开始,m 阅读全文
摘要:
1.基础知识(了解栈结构) 先回顾一下关于栈的最简单知识; 本文主要涉及线性栈假如我们不考虑栈底,栈底是固定不动的,只考虑栈顶,那么栈就像一只放在桌子上的空杯,杯底固定贴在桌子上。而如果我们往这个杯子里放方糖,先放进去的方糖总是被后放进去的方糖压在下面,也就是说要先取出后放进去的方糖才能取出先放进去 阅读全文