收藏 分销(赏)

数据结构二叉树实验报告.doc

上传人:仙人****88 文档编号:9151124 上传时间:2025-03-15 格式:DOC 页数:5 大小:94.54KB 下载积分:10 金币
下载 相关 举报
数据结构二叉树实验报告.doc_第1页
第1页 / 共5页
数据结构二叉树实验报告.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
实验三 二叉树的遍历 一、实验目的 1、熟悉二叉树的结点类型和二叉树的基本操作。 2、掌握二叉树的前序、中序和后序遍历的算法。 3、加深对二叉树的理解,逐步培养解决实际问题的编程能力。 二、实验环境 运行C或VC++的微机。 三、实验内容 1、依次输入元素值,以链表方式建立二叉树,并输出结点的值。 2、分别以前序、中序和后序遍历二叉树的方式输出结点内容。 四、设计思路 1. 对于这道题,我的设计思路是先做好各个分部函数,然后在主函数中进行顺序排列,以此完成实验要求 2.二叉树采用动态数组 3.二叉树运用9个函数,主要有主函数、构建空二叉树函数、建立二叉树函数、访问节点函数、销毁二叉树函数、先序函数、中序函数、后序函数、范例函数,关键在于访问节点 五、程序代码 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define OK 1 #define ERROR 0 typedef struct TNode//结构体定义 { int data; //数据域 struct TNode *lchild,*rchild; // 指针域包括左右孩子指针 }TNode,*Tree; void CreateT(Tree *T)//创建二叉树按,依次输入二叉树中结点的值 { int a; scanf("%d",&a); if(a==00) // 结点的值为空 *T=NULL; else // 结点的值不为空 { *T=(Tree)malloc(sizeof(TNode)); if(!T) { printf("分配空间失败!!TAT"); exit(ERROR); } (*T)->data=a; CreateT(&((*T)->lchild)); // 递归调用函数,构造左子树 CreateT(&((*T)->rchild)); // 递归调用函数,构造右子树 } } void InitT(Tree *T)//构建空二叉树 { T=NULL; } void DestroyT(Tree *T)//销毁二叉树 { if(*T) // 二叉树非空 { DestroyT(&((*T)->lchild)); // 递归调用函数,销毁左子树 DestroyT(&((*T)->rchild)); // 递归调用函数,销毁右子树 free(T); T=NULL; } } void visit(int e)//访问结点 { printf("%d ",e); } void PreOrderT(Tree *T,void(*visit)(int))//先序遍历T { if(*T) // 二叉树非空 { visit((*T)->data); // 先访问根结点 PreOrderT(&((*T)->lchild),visit); // 递归调用函数,先序遍历左子树 PreOrderT(&((*T)->rchild),visit); // 递归调用函数,先序遍历右子树 } } void InOrderT(Tree *T,void(*visit)(int)) { if(*T) { InOrderT(&((*T)->lchild),visit); // 递归调用函数,中序遍历左子树 visit((*T)->data); // 访问根结点 InOrderT(&((*T)->rchild),visit); // 递归调用函数,中序遍历右子树 } } void PostOrderT(Tree *T,void(*visit)(int)) { if(*T) { PostOrderT(&((*T)->lchild),visit); // 递归调用函数,后序遍历左子树 PostOrderT(&((*T)->rchild),visit); // 递归调用函数,序遍历右子树 visit((*T)->data); // 访问根结点 } } void example() { int i; printf("如果你想建立如图所示的二叉树\n"); printf("\n"); printf(" 1 \n"); printf(" / \\ \n"); printf(" 3 3 \n"); printf(" / \\ \\ \n"); printf(" 4 5 7 \n"); printf("\n"); printf("请输入:1 3 4 00 00 5 00 00 3 00 7 00 00\n"); printf("\n按先序次序输入二叉树中结点的值(输入00表示节点为空)\n"); for(i=0;i<71;i++) printf("*"); printf("\n"); } int main () { Tree T; printf("**************欢迎使用!**************潘俊达\n"); example(); printf("\n请输入所要建立的二叉树:\n"); CreateT(&T); InitT(&T); int i; printf("先序遍历二叉树:\n"); PreOrderT(&T,visit); printf("\n"); printf("\n中序遍历二叉树:\n"); InOrderT(&T,visit); printf("\n"); printf("\n后序遍历二叉树:\n"); PostOrderT(&T,visit); printf("\n"); system("PAUSE"); return 0; } 六、程序截图 1.范例函数显示,并输入先序二叉树节点值 2.先序遍历二叉树 3.中序遍历二叉树 3.后序遍历二叉树
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服