树和二叉树实验报告.pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

..

树和二叉树

一、实验目的

1.掌握二叉树的构造特征,以及各种存储构造的特点及适用围

2.掌握用指针类型描述、访问和处理二叉树的运算

二、实验要求

1.认真阅读和掌握本实验的程序

2.上机运行本程序

3.保存和打印出程序的运行结果,并结合程序进展分析

4.按照二叉树的操作需要,重新改写主程序并运行,打印出文件清单和运

行结果

三、实验容

1.输入字符序列,建立二叉链表

2.按先序、中序和后序遍历二叉树〔递归算法〕

3.按某种形式输出整棵二叉树

4.求二叉树的高度

5.求二叉树的叶节点个数

6.交换二叉树的左右子树

7.借助队列实现二叉树的层次遍历

8.在主函数中设计一个简单的菜单,分别调试上述算法

为了实现对二叉树的有关操作,首先要在计算机中建立所需的二叉树。建立

二叉树有各种不同的方法。一种方法是利用二叉树的性质5来建立二叉树,

输入数据时要将节点的序号〔按满二叉树编号〕和数据同时给出:〔序号,

.v.

..

数据元素0〕。另一种方法是主教材中介绍的方法,这是一个递归方法,与

先序遍历有点相似。数据的组织是先序的顺序,但是另有特点,当某结点的

某孩子为空时以字符“*〞来充当,也要输入。假设当前数据不为“*〞,那么

申请一个结点存入当前数据。递归调用建立函数,建立当前结点的左右子树

四、解题思路

1、先序遍历:访问根结点,先序遍历左子树,先序遍历右子树

2、中序遍历:中序遍历左子树,访问根结点,中序遍历右子树

3、后序遍历:后序遍历左子树,后序遍历右子树,访问根结点

4、层次遍历算法:采用一个队列q,先将二叉树根结点入队列,然后退队列,

输出该结点;假设它有左子树,便将左子树根结点入队列;假设它有右子树,便

将右子树根结点入队列,直到队列空为止。因为队列的特点是先进后出,所以能

够到达按层次遍历二叉树的目的

五、程序清单

*includestdio.h

*includestdlib.h

*defineM100

typedefcharEtype;//定义二叉树结点值的类型为字符

typedefstructBiTNode//树结点构造

{

Etypedata;

structBiTNode*lch,*rch;

.v.

..

}BiTNode,*BiTree;

BiTreeque[M];

intfront=0,rear=0;

//函数原型声明

BiTNode*creat_bt1();

BiTNode*creat_bt2();

voidpreorder(BiTNode*p);

voidinorder(BiTNode*p);

voidpostorder(BiTNode*p);

voidenqueue(BiTree);

BiTreedelqueue();

voidlevorder(BiTree);

inttreedepth(BiTree);

voidprtbtree(BiTree,int);

voidexchange(BiTree);

intleafcount(BiTree);

voidpaintleaf(BiTree);

BiTNode

文档评论(0)

150****8199 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档