- 0
- 0
- 约2.25万字
- 约 15页
- 2020-07-16 发布于天津
- 举报
数据结构(双语)
——项目文档报告
用两种方式实现表达式自动计算
专 业:
班 级:
指导教师:
姓 名:
学 号:
文档
实用标准文案
目 录
一、设计思想……………………………………………………… .01
二、算法流程图…………………………………………………… .02
三、源代码………………………………………………………… .04
四、运行结果……………………………………………………… .11
五、遇到的问题及解决…………………………………………… .11
六、心得体会……………………………………………………… .12
文档
实用标准文案
一、设计思想
二叉树的遍历分为三种方式, 分别是先序遍历, 中序遍历和后序遍历。 先序遍历实现的
顺序是:根左右,中序遍历实现的是:左根右,后续遍历实现的是:左右根。根据不同的算
法分,又分为递归遍历和非递归遍历。
递归算法:
1.先序遍历:先序遍历就是首先判断根结点是否为空,为空则停止遍历,不为空则将
左子作为新的根结点重新进行上述判断, 左子遍历结束后, 再将右子作为根结点判断, 直至
结束。到达每一个结点时,打印该结点数据,即得先序遍历结果。
2. 中序遍历: 中序遍历是首先判断该结点是否为空, 为空则结束, 不为空则将左子作为
根结点再进行判断, 打印左子, 然后打印二叉树的根结点, 最后再将右子作为参数进行判断,
打印右子,直至结束。
3. 后续遍历:指针到达一个结点时, 判断该结点是否为空,为空则停止遍历,不为空则
将左子作为新的结点参数进行判断, 打印左子。 左子判断完成后, 将右子作为结点参数传入
判断,打印右子。左右子判断完成后打印根结点。
非递归算法:
1. 先序遍历:首先建立一个栈, 当指针到达根结点时,打印根结点,判断根结点是否有
左子和右子。 有左子和右子的话就打印左子同时将右子入栈, 将左子作为新的根结点进行判
断,方法同上。 若当前结点没有左子, 则直接将右子打印, 同时将右子作为新的根结点判断。
若当前结点没有右子, 则打印左子, 同时将左子作为新的根结点判断。 若当前结点既没有左
子也没有右子,则当前结点为叶子结点,此时将从栈中出栈一个元素,作为当前的根结点,
打印结点元素, 同时将当前结点同样按上述方法判断, 依次进行。 直至当前结点的左右子都
为空,且栈为空时,遍历结束。
2. 中序遍历:首先建立一个栈,定义一个常量 flag (flag 为 0 或者 1),用 flag 记录
结点的左子是否去过,没有去过为 0,去过为 1,默认为 0. 首先将指针指向根结点,将根结
点入栈,然后将指针指向左子, 左子作为新的结点,将新结点入栈,然后再将指针指向当前
结点的左子,直至左子为空,则指针
您可能关注的文档
- 中药材种植专业合作社可行性研究报告.pdf
- 中药的药剂学20生物药剂学与药物动力学.pdf
- 串联型直流稳压电源实验报告材料.pdf
- 临床类病史采集精彩试题答题纸.pdf
- 主动语态变被动语态专题练习.pdf
- 主观能动性是人区别于物地特点.pdf
- 主题阅读与读书习惯地养成的研究.pdf
- 乘法地初步认识(一).pdf
- 乘法运算定律教学设计课题教案设计.pdf
- 乡中心学校校舍改造可行性研究报告.pdf
- 2025年版汽车趋势报告 The 2025 EPA Automotive Trends Report.docx
- 2026年边缘计算开源平台EdgeX Foundry入门与二次开发.docx
- 2026年超声内镜放大内镜早癌诊断AI辅助识别系统临床评价.docx
- 2026年报废汽车回收与再制造逆向物流体系.docx
- 2026年产品碳足迹核算方法学:从摇篮到大门与从摇篮到坟墓.docx
- 2026年城乡要素平等交换双向流动政策创新试点申报材料.docx
- 2026年超导半导体接口电路架构与电平转换驱动器设计.docx
- 2026年财政贴息不再以再贷款支持为前提后的风险防范与合规要点.docx
- 2026年不动产信托登记试点政策对遗嘱信托支持.docx
- 2026年城乡有机废弃物协同处理技术方案.docx
原创力文档

文档评论(0)