实验五 树和二叉树的实验1 树的顺序结构的实现

来源:互联网 发布:用vb编写九九乘法表 编辑:程序博客网 时间:2024/06/05 12:46

一、实验目的

1、 熟练理解树和二叉树的相关概念,掌握的存储结构和相关操作实现;

2、 掌握树的顺序结构的实现;

3、 学会运用树的知识解决实际问题

二、 实验内容自己确定一个二叉树(树结点类型、数目和结构自定)利用顺序结构方法存储。实现树的构造,并完成:

1)层序输出结点数据;

2)以合理的格式,输出各个结点和双亲、孩子结点信息;

3)输出所有的叶子结点信息;

4)分析你的算法对于给定的二叉树的存储效率。

三、实验步骤

1、依据实验内容,先确定具体的二叉树,并说明结点的数据据类型;

2、设计具体的算法;

3、写出完整程序;

4、总结、运行结果和分析算法效率。

5、总体收获和不足,疑问等。

四、实验要求

1、 按照数据结构实验任务书,提前做好实验预习与准备工作。

2、 在个人主页上发文章提交作业。

3、 实验课会抽查3-5人,希望你可以被查到!


五、源代码

#includeusing namespace std;class BiTree    {    public:        BiTree(){memset(Tree,0,sizeof(Tree));}        ~BiTree(){}        int createbitree();      int visit(int n);      int calnode(int i,int &n);        int depth(int n);        int max(int a,int b); int parent();int children();void leaves();int leavesnode();private:    int Tree[100];    };    int BiTree::createbitree()    {       int n,i=1;       cout<<"请按照从上到下的顺序依次输入二叉树各个节点,空节点用0表示,以-1表示输入结束:"<>n && n!=-1)       {          Tree[i]=n;          i++;      }      return 0;  }    int BiTree::visit(int n)    { for(n=1;n<100;n++){    if(Tree[n]!=-1 && Tree[n]!=0)          cout<>x;for(n=1;n<100;n++){if(Tree[n]==x)cout<<"双亲:"<>x;for(n=1;n<100;n++){if(Tree[n]==x){if(Tree[2*n]!=0 && Tree[2*n+1]!=0)cout<<"左孩子:"<b?a:b;}int BiTree::depth(int n){int hl,hr;for(n=1;n<100;){if (Tree[n]!=-1) {hl = depth(2*n);hr = depth(2*n+1);}}return 1+ max(hl, hr);}int main()    {BiTree tree;        int n=0;     tree.createbitree(); cout<

输入如图所示的二叉树


六、运行结果





原创粉丝点击