欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构二叉树遍历实验报告.docx

    • 资源ID:1169601       资源大小:338.02KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构二叉树遍历实验报告.docx

    1、数据结构二叉树遍历实验报告数据结构-二叉树遍历实验报告数据结构之二叉树实 验 报 告 题目:二叉树的遍历和子树交换 指导老师:杨政宇 班级:通信1202 姓名:徐江 学号:0909121127需求分析1.演示程序分别用多种遍历算法遍历二叉树并把数据输出。2.输入字符序列,递归方式建立二叉树。3.在演示过程序中,用户敲击键盘,输入数据,即可看到数据的输出。4.实现链式存储的二叉树的多种遍历算法。遍历算法包括:a)中序递归遍历算法、前序递归遍历算法【选】b)中序遍历非递归算法c)先序或后序遍历非递归算法d)建立中序线索,并进行中序遍历和反中序遍历5.实现二叉树的按层遍历算法6.设计一个测试用的二叉

    2、树并创建对应的内存二叉树,能够测试自己算法的边界(包括树节点数为0、1以及1 的不同情形)。7.测试数据:输入数据:-+a *b -c d -e f 概要设计说明:本程序在递归调用中用到了链表,在非递归调用时用到了栈。1.栈的抽象数据类型ADT Stack数据对象:D=ai|aichar,i=1,2,3.数据关系:R=| ai -1,ai D,i=2,3.基本操作:InitStack(&S) 操作结果:构造一个空栈StackEmpty( S ) 初始条件:栈S已存在。 操作结果:若S为空栈,则返回OK,否则返回ERROR。 Push( &S, e ) 初始条件:栈S已存在。 操作结果:插入元素

    3、e为新的栈顶元素。 Pop( &S, &e ) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素,并用e返回其值。 GetTop( S, &e ) 初始条件:栈S已存在且非空。操作结果:中序遍历二叉树,并将其中序线索化。InOrderTraverse_Thr( T, print);初始条件:二叉树T在在。操作结果:中序非递归遍历二叉线索树TInThreading(p);初始条件:结点p在在。操作结果:结点p及子树线索化。3.主程序的流程:void main() 初始化; 提示; 执行二叉数ADT函数;4.本程序包含三个模块1)主程序模块void main()初始化;接受命令;显示结果;

    4、2)链表模块。递归调用时实现链表抽象数据类型。3)栈模块。非递归调用时实现栈的抽象数据类型。详细设计1.宏定义及全局变量#define TElemType char#define SElemType BiTree#define OK 1#define OVERFLOW 0#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10SqStack S;BiThrTree pre;BiThrTree i;2.函数定义int CreateBiTree(BiTree &T); /创建二叉树void PreOrderTravers

    5、e_re(BiTree T,void (*print)(TElemType e); /先序递归遍历二叉树void InOrderTraverse(BiTree T,int (*print)(TElemType e); /中序非递归遍历二叉树void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) ; /中序递归遍历二叉树void PreOrderTraverse(BiTree T,int (*print)(TElemType e); /先序非递归遍历二叉树int print(TElemType e); /打印元素void InitSt

    6、ack(SqStack &S); /栈的初始化void Pop(SqStack &S,SElemType &e);void Push(SqStack &S,SElemType &e);int StackEmpty(SqStack S);int GetTop(SqStack S,SElemType &e);void Levelorder(BiTree T) ;void InOrderThreading(BiThrTree &Thrt,BiThrTree T);int InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e);void I

    7、nThreading(BiThrTree p);3.二叉树链表数据结构:typedef struct BiTNode TElemType data; struct BiTNode *lchild ,*rchild; PointerTag LTag , RTag;BiTNode , *BiTree , BiThrNode , *BiThrTree; 基本操作:a)构造二叉树Tint CreateBiTree(BiTree &T) char ch; scanf(%c,&ch); if(ch= ) T=NULL; else if(!(T=(BiTNode *)malloc(sizeof(BiTNod

    8、e) return ERROR; T-data=ch; if (CreateBiTree(T-lchild) T-LTag=Link; if (CreateBiTree(T-rchild) T-RTag=Link; return OK;b)先序递归遍历二叉数T,并输出全部结点值。void PreOrderTraverse_re(BiTree T,int (*print)(TElemType e) if(T) if(print(T-data) PreOrderTraverse_re(T-lchild,print); PreOrderTraverse_re(T-rchild,print); ret

    9、urn ; else return ;c)中序非递归遍历二叉树T,并输出全部结点值void InOrderTraverse(BiTree T,int (*print)(TElemType e) SqStack S; S.base=NULL;S.top=NULL; SElemType p=NULL; InitStack(S); Push(S,T); while(!StackEmpty(S) while(GetTop(S,p)&p) Push(S,p-lchild); Pop(S,p); if(!StackEmpty(S) Pop(S,p); print(p-data); Push(S,p-rch

    10、ild); return;d)中序递归遍历二叉树T,并输出全部结点值void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) if(T) InOrderTraverse_re(T-lchild,print); print(T-data); InOrderTraverse_re(T-rchild,print); e)中序遍历二叉树T,并将其中序线索化,Thrt指向头结点 void InOrderThreading(BiThrTree &Thrt,BiThrTree T) Thrt=(BiThrTree)malloc(sizeof(BiT

    11、hrNode); Thrt-LTag=Link;/建头结点 Thrt-RTag=Thread; Thrt-rchild=Thrt;/右指针回指 if(!T) Thrt-lchild=Thrt; else Thrt-lchild=T; pre=Thrt; InThreading(T);/中序遍历进行中序线索化 pre-rchild=Thrt; pre-RTag=Thread;/最后一个结点线索化 Thrt-rchild=pre; i=Thrt;/InOrderThreadingf)结点p线索化void InThreading(BiThrTree p) if (p) InThreading(p-l

    12、child); / 左子树线索化 if (!p-lchild) / 建前驱线索 p-LTag = Thread; p-lchild = pre; if (!pre-rchild) / 建后继线索 pre-RTag = Thread; pre-rchild = p; pre = p; / 保持pre指向p的前驱 InThreading(p-rchild); / 右子树线索化 / InThreadingg)/中序遍历线索化二叉树int InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e) BiThrTree p=NULL; p=T-l

    13、child; while(p!=T) while(p-LTag=Link) p=p-lchild; if(!print(p-data) return ERROR; while(p-RTag=Thread & p-rchild!=T) p=p-rchild; print(p-data); p=p-rchild; return OK;4.栈数据结构:typedef struct SElemType *base; SElemType *top; int stacksize;SqStack;基本操作:a)创建一个空栈void InitStack(SqStack &S) S.base=(SElemTyp

    14、e*)malloc(STACK_INIT_SIZE*sizeof(SElemType); S.top=S.base; /初始为空 S.stacksize=STACK_INIT_SIZE; return;b)栈顶插入元素void Push(SqStack &S,SElemType &e) if(S.top-S.base=S.stacksize) S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;


    注意事项

    本文(数据结构二叉树遍历实验报告.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开