您所在位置: 网站首页 / 数据结构作业——二叉树.docx / 文档详情
数据结构作业——二叉树.docx 立即下载
2025-08-27
约2.2万字
约36页
0
24KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

数据结构作业——二叉树.docx

数据结构作业——二叉树.docx

预览

免费试读已结束,剩余 31 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构作业——二叉树

第一篇:数据结构作业——二叉树数据结构实验报告二题目:用先序递归过程监理二叉树(存储结构:二叉链表)输入数据按先序遍历输入,当某节点左子树或者右子树为空时,输入‘*’号,如输入abc**d**e**时,得到的二叉树为:并用如下实力测试:算法思路:显然,建立一个二叉链表存储的二叉树,如果不考虑效率要求,考虑到程序的简介性,递归建立和递归遍历是一种很好的办法。利用C++的类模板的方法实现建立,遍历,输出等二叉树操作。首先利用构造函数实现先序遍历建立二叉树,然后调用类模板中已经声明好的四种遍历函数,将遍历结果输出,检验建立好的二叉树是否为要求的二叉树。初始化:利用构造函数建立二叉树。采用先序递归的调用方法,构造函数主体如下:templateBiTree::BiTree(){this->root=Creat();//利用this指针调用creat函数}templateBiNode*BiTree::Creat()//定义构造函数{BiNode*root;Taa;cout>aa;if(aa==“*”)root=NULL;else{root=newBiNode;//生成一个结点root->data=aa;root->lchild=Creat();//递归建立左子树root->rchild=Creat();//递归建立右子树}returnroot;}构造这样的函数,可以在输入时,按先序遍历顺序每次输入一个节点的数据,可以实现任意二叉树的构造。为了检验构造的二叉树是否为预先设想的二叉树,需要遍历二叉树并进行输出。考虑到单一的输出并不能确定唯一的二叉树,因此对遍历二叉树的四种常用发方法,即先序遍历,中序遍历,后续遍历,层次遍历分别实现,通过遍历结果检验构造的二叉树是否为预先设计好的二叉树。先序遍历:采用递归的方法建立。templatevoidBiTree::xianxu(BiNode*root){if(root==NULL)return;//如果节点为空,则返回空else{coutdataxianxu(root->lchild);//先序遍历树的左子树xianxu(root->rchild);//先序遍历树的右子树}中序遍历:递归方法建立:templatevoidBiTree::zhongxu(BiNode*root){if(root==NULL)return;//如果节点为空,则返回空else{zhongxu(root->lchild);//中序递归遍历root的左子树coutdata//访问根结点zhongxu(root->rchild);//中序递归遍历root的右子树}}后序遍历:递归方法建立:templatevoidBiTree::houxu(BiNode*root){if(root==NULL)return;//如果节点为空,返回空else{houxu(root->lchild);//后序递归遍历root的左子树houxu(root->rchild);//后序递归遍历root的右子树coutdata//访问根节点}}层序遍历:采用非递归方法。利用队列的方法层序遍历二叉树。建立一个队列,在访问一个节点的时候,把它的左孩子和右孩子入队,并且将这个节点出队。当队列为空时,就完成了对二叉树的层序遍历。templatevoidBiTree::cengxu(BiNode*root){constintMaxSize=100;intfront=0;intrear=0;//利用队列的方法对树进行层序遍历BiNode*Q[MaxSize];BiNode*q;if(root==NULL)return;//如果节点为空,返回空else{Q[rear++]=root;//若节点不为空,则该节点入队while(front!=rear){q=Q[front++];//只要队列不为空,则节点依次出队coutdataif(q->lchild!=NULL)Q[rear++]=q->lchild;if(q->rchild!=NULL)Q[rear++]=q->rchild;//同时,该节点的双子入队}}}函数主体部分:声明一个类中的对象,调用构造函数,建立二叉树,并输出四种遍历结果,检验输出结果。intmain(){BiTreeshu;//声明类中一个对象,在构造了一颗树BiNode*root=shu.Getroot();//获取指向根结点的指针cout程序结构:主函数建立一个类模板定义构造函数,析构函数,以及成员函数声明类中的一个对象调用构造函数,构造一颗二叉树层序遍历二叉树后序遍历二叉树中序遍历二叉树前序遍历二叉树获取该二叉树的根节点将结果输出,人工检验源代码:#includeusingnamespacestd;templatestructB
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

数据结构作业——二叉树

文档大小:24KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用