数据结构课程设计报告二叉树的应用操作_课程设计报告二叉树

2020-02-28 其他范文 下载本文

数据结构课程设计报告二叉树的应用操作由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“课程设计报告二叉树”。

数据结构课程设计报告

题目名称: 二叉树的应用问题 专业班级: 计算机科学与技术

学生姓名:

学生学号:

指导教师:

目录

一、题目要求..............................................二、需求分析..............................................三、概要设计..............................................四、详细设计..............................................五、调试分析.............................................六、心得体会.............................................一、题目要求

实现二叉树,求解若干二叉树应用问题

 实现二叉链表表示的二叉树,包括下列运算:

 建立一棵二叉树;

 按先序、中序和后序遍历二叉树;  按层次遍历;

 求一棵二叉树的高度;

 交换一棵二叉树的左右子树;

 设计一个菜单驱动程序,测试上述算法

二、需求分析

建立一棵二叉树:

int CreateBiTree(BiTree &T)按先序遍历二叉树:

void PreOrder(BiTree &T)按中序遍历二叉树:

void InOrder(BiTree &T)按后序遍历二叉树:

void PostOrder(BiTree &T)按层次遍历:

void LevelOrder(BiTree &T)求一棵二叉树的高度:

int Depth(BiTree &T)交换一棵二叉树的左右子树:int PreOrderTraverse(BiTree T)菜单驱动程序:

void menu()

三、概要设计

定义二叉树的存储结构,每个结点中设置三个域,即值域、左指针域、右指针域。要建立二叉树T的链式存储结构,即建立二叉链表。根据输入二叉树结点的形式不同,建立的方法也不同,本系统采用先序序列递归建立二叉树。

先序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则:(1)访问根结点;(2)先序遍历左子树;(3)先序遍历右子树。

中序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则:(1)中序遍历左子树;(2)访问根结点;

(3)中序遍历右子树。

后序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则:(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。

层次遍历二叉树的操作选用队列的存储结构。先建立一个长度为1的队列,利用while循环,将根结点放入队首,再将队列长度加一。然后依次遍历左子树和右子树,每遍历一次,2、先序遍历二叉树:

void PreOrder(BiTree &T){ if(!T)

return;coutdataleft_child);PreOrder(T->right_child);}

3、中序遍历二叉树:

void InOrder(BiTree &T){ if(!T)return;InOrder(T->left_child);coutdataright_child);}

4、后序遍历二叉树:

void PostOrder(BiTree &T){ if(!T)return;PostOrder(T->left_child);PostOrder(T->right_child);coutdata

5、按层次遍历:

void LevelOrder(BiTree &T){ BiTree queue[100];int front,rear;if(T==NULL)return;front=-1;rear=0;queue[rear]=T;while(front!=rear){ front++;coutdataleft_child!=NULL){ rear++;queue[rear]=queue[front]->left_child;

cin>>a;if(a>=0||a

{

cout

Output(T);

cout

}

system(“pause”);

break;case 1:

cout

system(“pause”);

break;case 2:

{

cout

PreOrder(T);

cout

}

system(“pause”);

break;case 3:

{

cout

InOrder(T);

cout

}

system(“pause”);

break;case 4:

{

cout

PostOrder(T);

cout

}

system(“pause”);

break;case 5:

{

cout

LevelOrder(T);

cout

(二)详细程序代码:{ if(!T){

cout

return;} coutdataleft_child)Output(T->left_child);if(T->right_child)Output(T->right_child);}

int Depth(BiTree &T){ int i,j;if(!T)return 0;i=Depth(T->left_child);j=Depth(T->right_child);return(i>j?i:j)+1;}

void PreOrder(BiTree &T){ if(!T)

return;coutdataleft_child);PreOrder(T->right_child);}

void InOrder(BiTree &T){ if(!T)return;InOrder(T->left_child);coutdataright_child);}

void PostOrder(BiTree &T){ if(!T)return;PostOrder(T->left_child);PostOrder(T->right_child);coutdata

void LevelOrder(BiTree &T)

cout

1.二叉树树深

>>“

cout

2.二叉树的先序遍历

>>”

cout

3.二叉树的中序遍历

>>“

cout

4.二叉树的后序遍历

>>”

cout

5.二叉树的层次遍历

>>“

cout

6.左右孩子交换

>>”

cout

7.退出

>>“

cout

void main(){

int br,a;BiTree T;br=CreateBiTree(T);

while(1){

menu();

cout”;

cin>>a;

if(a>=0||a

{

switch(a)

{

case 0:

{

cout

Output(T);

cout

}

system(“pause”);

break;

case 1:

cout

system(“pause”);

break;

case 2:

{

cout

PreOrder(T);

cout

}

system(“pause”);

break;

case 3:

{

cout

(一)先序输入二叉树:

(二)建立一棵二叉树:

1后序遍历:

(四)按层次遍历:

3中序遍历交换后的二叉树:

六、心得体会

这次数据结构课程设计我选择的题目是二叉树的应用操作,题目要求中最难的部分是二叉树的层次遍历。在实现这个要求的时候我想了很久,最后通过在CSDN上找到了解决思路,就是用队列的方式。虽然是二叉树的题目,但是和其他知识点都有很多内在的联系。经过这次的实验,我不仅在二叉树的应用操作层面上更加熟悉,对二叉树的理解更加深刻,更重要的是我认识到知识要融会贯通才是它的价值所在。我的C语言基础不是很扎实,所以在写代码的时候也遇到很大的困难。像很基础的“j?i:j”也是通过翻阅以前的书籍才找到答案。还有在编程过程中的习惯也不是很好,函数及变量的命名等细节问题,如果不加以注意的话,会对后面的编译调试造成很多不必要的麻烦。我应该在以后的学习中加强实践,这样才能更扎实地掌握所学知识点,更有效地将书本上的知识变成解决实际问题的经验。

《数据结构课程设计报告二叉树的应用操作.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构课程设计报告二叉树的应用操作
点击下载文档
相关专题 课程设计报告二叉树 报告 数据结构 课程设计 课程设计报告二叉树 报告 数据结构 课程设计
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文