完整的二叉树结构及测试。
二叉树的完整实现以及测试,实现对二叉树的基本运算,如建立,遍历,查询及二叉树的运用实例等。
既然是实现其基本功能,则界面需要有选项,每一个选项对应一个功能,以便用户一一测试运算。进入界面时应该有一个菜单界面,提供各个功能,用户可以通过选择实现每一个运算的测试。
先写好每一个功能函数的**,放在主函数的前面。再写好主函数的**,在主函数中通过switch…..case….相应的调用与用户选择一致的函数,从而测试每一个功能。
系统界面设计图如下所示:
用链式存储结构存储数据,其定义如下:
typedef int datatype;
typedef struct bitnode
datatype data;
struct bitnode *lchild,*rchild;
bitnode,*bitree;
**如下:#include<>
#include<>
#define maxsize 100
#define n 10
typedef int datatype;
datatype nil =0;
typedef struct bitnode
datatype data;
struct bitnode *lchild,*rchild;
bitnode,*bitree;
/初始化二叉树。
bitree initiatehead()
bitnode *bt;
bt=(bitnode*)malloc(sizeof(bitnode));
bt->lchild=null;
bt->rchild=null;
return bt;
/1 建立二叉树。
void creatbitree(bitree *t)
datatype ch;
scanf("%d",&ch);
if(ch==nil)
t=null;
else/2 查找值为x的结点。
bitree search(bitree bt,datatype x)
bitree p;
if(bt==null)
return null;
else if(bt->data==x)
return bt;else
/先序递归遍历此二叉树。
void finorder(bitree t)
if(t)/中序递归遍历此二叉树。
void inorder(bitree t)
if(t)/后序递归遍历此二叉树。
void linorder(bitree t)
if(t)/先序非递归遍历此二叉树。
void nrpreorder(bitree bt)
bitnode *stack[maxsize];
bitnode *p;
int top=-1;
if(bt==null)
return ;
p=bt;while(!(p==null&&top==-1))
if(top<0)
return;else
/中序非递归遍历此二叉树。
void nrinorder1(bitree bt)
bitnode *stack[maxsize];
bitnode *p;
int top=-1;
if(bt==null)
return;
p=bt;while(!(p==null&&top==-1))
if(top<0)
return;else
/后序非递归遍历此二叉树。
void nrpostorder(bitree bt)
bitnode *p=bt, *stack[maxsize];
int tag[maxsize];
int top=-1;
doif(top>=0)
} while((p!=null)||top>=0));
/3 遍历此二叉树。
void bianli (bitree t)
int choice,a,b;
printf("请选择遍历的方法");
printf("*1---递归遍历***n");
printf("*2---非递归遍历***n");
scanf("%d",&choice);
switch(choice)
break;
case 2:
printf("你选择的是非递归遍历");
printf("请再选择遍历的方法");
printf("*1---先序非递归遍历**");
printf("*2---中序非递归遍历**");
printf("*3---后序非递归遍历**");
scanf("%d",&b);
switch(b)
break;
printf("");
int visit(bitnode *bn)
return bn->data;
/4 按层次遍历二叉树。
void levelorder(bitree bt)
bitnode *queue[maxsize];
int front,rear;
if(bt==null)
return;
front=-1;
rear=0;
queue[rear]=bt;
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...