数据结构》实验五: 树和二叉树实验

数据结构》实验五:  树和二叉树实验

一..实验目的

     巩固树和二叉树的相关知识,特别是二叉树的相关内容。学会运用灵活应用。

1.回树和二叉树的逻辑结构和存储方法,清楚掌握树和二叉树的遍历操作。

2.学习树的相关知识来解决实际问题。

3.进一步巩固程序调试方法。

4.进一步巩固模板程序设计。

二.实验时间

   准备时间为第10周到第12前半周,具体集中实验时间为12周周四。2个学时。

三..实验内容

1.自己设计一个二叉树,深度最少为4,请递归算法分别用前序、中序、后序遍历输出树结点。


    实验教材P207218

五.实验报告

1.在博客中先写上实习目的和内容,画出主要操作运算算法图,然后分别上传程序代码。插入调试关键结果截图。

2.写一个博文,比较总结树和二叉树的相关知识。

      建议从知识点角度和应用角度两个方面各陈述。

头文件:

# ifndef Bitree_H

# define Bitree_H

struct BiNode

{

       chardata;

       BiNode* lchild,* rchild;

};

class Bitree

{

public:

       Bitree(){root= Creat(root);}

       ~Bitree(){Release(root);}

       voidPreOrder(){PreOrder(root);}

       voidInOrder(){InOrder(root);}

       voidPostOrder(){PostOrder(root);}

private:

       BiNode* root;

       BiNode* Creat(BiNode * bt);

       voidRelease(BiNode *bt);

       voidPreOrder(BiNode *bt);

       voidInOrder(BiNode *bt);

       voidPostOrder(BiNode *bt);

};

# endif

源程序:

# include<iostream>

using namespace std;

# include"Bitree.h"

 

BiNode * Bitree::Creat(BiNode * bt)

{

       charch;

       cout<<"请输入创建一棵二叉树的结点数据"<<endl;

       cin>>ch;

       if(ch=='#')returnNULL;

       else{

              bt=newBiNode;

              bt->data=ch;

              bt->lchild=Creat(bt->lchild);

              bt->rchild=Creat(bt->rchild);

       }

       returnbt;

}

void Bitree::Release(BiNode * bt)

{

       if(bt!=NULL){

              Release(bt->lchild);

              Release(bt->rchild);

              deletebt;

       }

}

void Bitree::PreOrder(BiNode*bt)

{

       if(bt==NULL)return;

       else{

              cout<<bt->data<<"";

              PreOrder(bt->lchild);

           PreOrder(bt->rchild);

       }

}

void Bitree::InOrder(BiNode *bt)

{

       if(bt==NULL)return;

       else{

              InOrder(bt->lchild);

              cout<<bt->data<<"";

              InOrder(bt->rchild);

       }

}

void Bitree::PostOrder(BiNode * bt)

{

       if(bt==NULL)return;

       else{

              PostOrder(bt->lchild);

              PostOrder(bt->rchild);

              cout<<bt->data<<"";

       }

}

int main()

{

       BitreeT;

       cout<<"-------前序遍历-------"<<endl;

       T.PreOrder();

       cout<<endl;

       cout<<"-------中序遍历-------"<<endl;

       T.InOrder();

       cout<<endl;

       cout<<"-------后序遍历-------"<<endl;

       T.PostOrder();

       cout<<endl;

       return0;

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值