迭代函数的函数栈问题

pengzhixi 2009-06-04 10:04:32
象二叉书遍历问题
比如:
void inorder(ostream&out,Tree*root)
{
if(root!=0)
{
inorder(out,root->left);
out<<root->data;
inorder(out,root->right);
}
}
我想问下这个迭代函数的函数栈到底是什么样的?因为如果里面只有inorder(out,root->left);我还好理解,但是加了个inorder(out,root->right);我就不太清楚这个函数栈是什么样的.
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2009-06-05
  • 打赏
  • 举报
回复
---------         ---------         ---------------------------------
| | | |
| | | |
| | | |
----------- ---------
beackoom 2009-06-05
  • 打赏
  • 举报
回复
去数据结构看看中序遍历,对你理解这个函数有帮助,先输出做子树,再输出中间节点,再输出又子树
wanglchr 2009-06-05
  • 打赏
  • 举报
回复
支持楼上的,你可以用个深度不是很大的二叉树画画图模拟一下,会帮助你理解的!
hjjdebug 2009-06-05
  • 打赏
  • 举报
回复
假定你的两叉树是一个完整的两叉数,共10层,金字塔结构。
先递归到最底层(第10层左支第一片叶子),然后退一层到9层(第一片叶子),再到第10层右支(第2片叶子)。
然后退到第8层打扫房间(第一片叶子),再深入到10层左支(第三个叶子)打扫房间,退到9层(第二片叶子)
再到10层右支第4片叶子,再到7层第一片叶子,再到10层第5片叶子 ....
自己画个两叉树图。就清楚了。

可以知道它的堆栈是忽而深,忽而浅,反反复复。但其最深不超过10层。
goodname 2009-06-05
  • 打赏
  • 举报
回复
有些象3楼给的图,但是应该可能是高低不等的,这要视二叉树的具体构成而定。
  • 打赏
  • 举报
回复
唉,不就是个中序吗。
你把迭代也看成函数调用就是了。
lylm 2009-06-04
  • 打赏
  • 举报
回复
粗浅的说,应该就是递归访问左子树,根据函数调用,依次进栈,到叶子节点时,栈弹出,到上级函数,然后打印当前节点,再转移到右子树,类似。等高手
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧