中序线索化二叉树实验报告数据结构.docx

上传人:b****4 文档编号:27281464 上传时间:2023-06-28 格式:DOCX 页数:8 大小:168.15KB
下载 相关 举报
中序线索化二叉树实验报告数据结构.docx_第1页
第1页 / 共8页
中序线索化二叉树实验报告数据结构.docx_第2页
第2页 / 共8页
中序线索化二叉树实验报告数据结构.docx_第3页
第3页 / 共8页
中序线索化二叉树实验报告数据结构.docx_第4页
第4页 / 共8页
中序线索化二叉树实验报告数据结构.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

中序线索化二叉树实验报告数据结构.docx

《中序线索化二叉树实验报告数据结构.docx》由会员分享,可在线阅读,更多相关《中序线索化二叉树实验报告数据结构.docx(8页珍藏版)》请在冰豆网上搜索。

中序线索化二叉树实验报告数据结构.docx

中序线索化二叉树实验报告数据结构

长沙理工大学

 

数学与计算科学学院

实验报告

 

实验项目名称二叉树的中序线索化

所属课程名称数据结构

实验类型验证型、设计型

实验日期2014年11月26日

班级

学号

XX

成绩

 

一、实验概述:

【实验目的】

熟悉二叉树存储结构,掌握线索二叉链表的特点及基本运算

 

【实验原理】

1、二叉树的特点:

(1)是一种树形结构;

(2)每个节点至多有两颗子树;

(3)且子树有左右之分,其次序不能颠倒。

2、二叉树的顺序存储表示:

#defineMAX_TREE_SIZE100//二叉树的最大节点数

TypedfTelemTypeSqBiTree[MAX_TREE_SIZE];//0号单元存储根节点

SqBiTreebt;

---二叉树的二叉链表存储表示---

typedef struct BiTNode{

TElemType    data;

struct BiTNode *lchild,*rchild;//左右孩子指针

}BiTNode,*BiTree;

 

【实验环境】

VC++6.0

 

二、实验容:

【实验方案】

在Vc++环境下:

(1)构造二叉树T;

(2)编写二叉树T的中序线索化及中序遍历算法;

(3)设计主函数;

(4)调用以上算法,验证算法的正确性,调试运行,得出结果。

【实验过程】(实验步骤、记录、数据、分析)

1.输入头文件与宏定义,二叉树的存储结构,二叉树的中序线索化算法及中序遍历算法,设计主函数,定义数据类型,写入VC++6.0;

2.对程序进行第一次调试,出现以下错误:

3.检查源程序,分析错误原因

输入错误,将上述算法中的“p!

”误输为“p1”

针对错误,对源程序进行修改;

4.对源程序进行第二次调试,仍存在以下错误:

5.仔细核查源程序,寻找错误源头;

上述算法“BiThreTree*InOrderThrTree(BiThreTreeT)”中二叉树“T”前缺少标识符“*”

针对错误,再次对源程序进行修改;

6.对源程序进行第三次调试运行,未再出现错误;

7.输入任意数据如“abcdefg”,验证算法的正确性;

 

【实验结论】(结果)

【实验小结】(收获体会)

通过本次实验,我更加熟练地掌握了线索二叉链表的特点及基本运算。

在实验中遇到了一些问题,但通过同学的指导最终解决了。

完成这次作业后使我又进一步提高了程序编写的能力和增加了我对数据结构的兴趣。

三、指导教师评语及成绩:

评语

评语等级

及格

不及格

1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强

2.实验方案设计合理

3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)

4实验结论正确.

成绩:

指导教师签名:

批阅日期:

 

附录1:

源程序

#include

#include

#include

typedefenum{Link,Thread}PointerTag;//指针标志

typedefcharDataType;

typedefstructBiThreTree{//定义结点元素

PointerTagLTag,RTag;

DataTypedata;

structBiThreTree*lchild,*rchild;

}BiThreTree;

BiThreTree*pre;//全局变量,用于二叉树的线索化

BiThreTree*CreateTree()//按前序输入建立二叉树

{

BiThreTree*T;

DataTypee;

scanf("%c",&e);

if(e=='')

T=NULL;

else

{T=(BiThreTree*)malloc(sizeof(BiThreTree));

T->data=e;

T->LTag=Link;//初始化时指针标志均为Link

T->RTag=Link;

T->lchild=CreateTree();

T->rchild=CreateTree();

}

returnT;

}

voidInThread(BiThreTree*T)

{

BiThreTree*p;

p=T;

if(p)

{

InThread(p->lchild);

if(!

p->lchild)

{p->LTag=Thread;

p->lchild=pre;

}

if(!

pre->rchild)

{pre->RTag=Thread;

pre->rchild=p;

}

pre=p;

InThread(p->rchild);

}

}

BiThreTree*InOrderThrTree(BiThreTree*T)//中序线索化二叉树

{

BiThreTree*Thre;//Thre为头结点的指针

Thre=(BiThreTree*)malloc(sizeof(BiThreTree));

Thre->lchild=T;

Thre->rchild=Thre;

pre=Thre;

InThread(T);

pre->RTag=Thread;

pre->rchild=Thre;

Thre->rchild=pre;

returnThre;

}

voidInThrTravel(BiThreTree*Thre)//中序遍历二叉树

{

BiThreTree*p;

p=Thre->lchild;

while(p!

=Thre)//指针回指向头结点时结束

{

while(p->LTag==Link)

p=p->lchild;

printf("%c",p->data);

while(p->RTag==Thread&&p->rchild!

=Thre)

{p=p->rchild;

printf("%c",p->data);

}

p=p->rchild;

}

}

main()

{

BiThreTree*T,*Thre;

T=CreateTree();

Thre=InOrderThrTree(T);

InThrTravel(Thre);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1