5.1 二叉树的顺序存储实验
来源:互联网 发布:seo牛人 编辑:程序博客网 时间:2024/05/16 15:53
一、实验目的
1、 熟练理解树和二叉树的相关概念,掌握的存储结构和相关操作实现;
2、 掌握树的顺序结构的实现;
3、 学会运用树的知识解决实际问题
二、实验内容
自己确定一个二叉树(树结点类型、数目和结构自定)利用顺序结构方法存储。实现树的构造,并完成:
1)层序输出结点数据;
2)以合理的格式,输出各个结点和双亲、孩子结点信息;
3)输出所有的叶子结点信息;
4)分析你的算法对于给定的二叉树的存储效率。
1、依据实验内容,先确定具体的二叉树,并说明结点的数据据类型;
2、设计具体的算法;
3、写出完整程序;
4、总结、运行结果和分析算法效率。
5、总体收获和不足,疑问等。
四、实验代码
#include<iostream>#include<string>using namespace std;const int MaxSize=100;class Tree{private:char data[MaxSize];int n;public:Tree();void Insert(char x);void PerOrder(int root);void InOrder(int root); void PostOrder(int root);};Tree::Tree(){n=0;}void Tree::Insert(char x){n++;data[n]=x;}void Tree::PerOrder(int i){if (data[i]!='.'){cout<<data[i];if(2*i<=n&&data[2*i]!='.')PerOrder(2*i);if(2*i+1<=n&&data[2*i+1]!='.')PerOrder(2*i+1);}}void Tree::InOrder(int i){if (data[i]!='.'){if(2*i<=n&&data[2*i]!='.')InOrder(2*i);cout<<data[i];if(2*i+1<=n&&data[2*i+1]!='.')InOrder(2*i+1);}}void Tree::PostOrder(int i){if (data[i]!='.'){if(2*i<=n&&data[2*i]!='.')PostOrder(2*i);if(2*i+1<=n&&data[2*i+1]!='.')PostOrder(2*i+1);cout<<data[i];}}int main(){string str;while(cin>>str){Tree tree;for(int i=0;i<str.length();i++){tree.Insert(str[i]);}cout<<"前序遍历序列:"<<endl; tree.PerOrder(1);cout<<endl;cout<<"中序遍历序列:"<<endl; tree.InOrder(1);cout<<endl;cout<<"后序遍历序列:"<<endl;tree.PostOrder(1); cout<<endl;}}
五、实验运行结果
六、实验总结和心得
树的遍历是指从根结点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。通常有前序遍历,后序遍历和层序遍历三种方式。阅读全文
0 0
- 5.1 二叉树的顺序存储实验
- 实验5:二叉树的顺序存储实验
- 数据结构|二叉树的顺序存储(实验4.1)
- 数据库实验(五):二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树的顺序存储
- 二叉树顺序结构的基本实现(实验5.1)
- 二叉树顺序存储
- 顺序存储二叉树
- 二叉树-顺序存储
- 5.2 二叉树的链式存储实验
- 二叉树的顺序存储结构
- Pig join cogroup 介绍
- OpenStack API 认证和 API 请求工作流程
- linux环境mysql5.7.20安装
- sql server 在存储过程中使用事物
- 能装机,能在无光驱的实机稳定启动的reactos版本
- 5.1 二叉树的顺序存储实验
- 公专星沙考场科目三考试考前相关注意事项
- 华为研发工程师编程题3
- 用选择法对10个数由小到大排序
- 认证鉴权与API权限控制在微服务架构中的设计与实现(一)
- 微信jssdk基本使用
- capstone训练营2017-12-11
- 360木马查杀后mysql数据不能启动
- MIT6.00 1x 第一讲-计算机科学简介-笔记