实验报告-树和二叉树的各种操作

时间:2024.4.8

计算机学院实验报告专用纸

实验室:网络实验室                机号:网41            实验日期:20##年5月11日

计算机学院实验报告附页

计算机学院实验报告附页


第二篇:二叉树的遍历实验报告


二叉树的遍历实验报告

一、需求分析

在二叉树的应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理,这就是二叉树的遍历问题。

对二叉树的数据结构进行定义,建立一棵二叉树,然后进行各种实验操作。

二叉树是一个非线性结构,遍历时要先明确遍历的规则,先访问根结点还时先访问子树,然后先访问左子树还是先访问有右子树,这些要事先定好,因为采用不同的遍历规则会产生不同的结果。本次实验要实现先序、中序、后序三种遍历。

基于二叉树的递归定义,以及遍历规则,本次实验也采用的是先序遍历的规则进行建树的以及用递归的方式进行二叉树的遍历。

二、系统总框图

                         

三、各模块设计分析

   (1)建立二叉树结构

    建立二叉树时,要先明确是按哪一种遍历规则输入,该二叉树是按你所输入的遍历规则来建立的。本实验用的是先序遍历的规则进行建树。

二叉树用链表存储来实现,因此要先定义一个二叉树链表存储结构。因此要先定义一个结构体。此结构体的每个结点都是由数据域data、左指针域Lchild、右指针域Rchild组成,两个指针域分别指向该结点的左、右孩子,若某结点没有左孩子或者右孩子时,对应的指针域就为空。最后,还需要一个链表的头指针指向根结点。

要注意的是,第一步的时候一定要先定义一个结束标志符号,例如空格键、#等。当它遇到该标志时,就指向为空。

建立左右子树时,仍然是调用create()函数,依此递归进行下去,直到遇到结束标志时停止操作。

 (2)输入二叉树元素

   输入二叉树时,是按上面所确定的遍历规则输入的。最后,用一个返回值来表示所需要的结果。

 (3)先序遍历二叉树

   当二叉树为非空时,执行以下三个操作:访问根结点、先序遍历左子树、先序遍历右子树。

 (4)中序遍历二叉树

   当二叉树为非空时,程序执行以下三个操作:访问根结点、先序遍历左子树、先序遍历右子树。

  (5)后序遍历二叉树

    当二叉树为非空时,程序执行以下三个操作:访问根结点、先序遍历左子树、先序遍历右子树。

   (6)主程序

    需列出各个函数,然后进行函数调用。

四、各函数定义及说明

     因为此二叉树是用链式存储结构存储的,所以定义一个结构体用以存储。

         typedef struct BiTNode

{  char data;

             struct BiTNode *Lchild;

             struct BiTNode *Rchild;

}BiTNode,*BiTree;

     (1)主函数main()

         主程序要包括:定义的二叉树T、建树函数create()、先序遍历函数Preorder()、中序遍历函数Inorder()、后序遍历函数Postorder()。

     (2)建树函数Create()

         定义一个输入的数是字符型的,当ch为空时,T就为空值,否则的话就分配空间给T,T就指向它的结点,然后左指针域指向左孩子,右指针指向右孩子,若还有,继续调用Create(),依次循环下去,直到ch遇到空时,结束。

         最后要返回建立的二叉树T。

      (3)先序遍历函数Preorder()

         根据先序遍历规则,当T为非空时,先输出结点处的数据,指针指向左、右孩子,依次进行下去。

       (4) 中序遍历函数Inorder()

         根据中序遍历规则,当T为非空时,先左指针指向左孩子数据,然后输出结点处的数据,再右指针指向右孩子,依次进行下去。

      (5)后序遍历函数Postorder()

         根据后序遍历规则,当T为非空时,先右指针指向右孩子,然后左指针指向左孩子,最后输出结点处的数据,依次进行下去。

  五、使用说明

      在Turbo C的环境下,先按Ctrl+F9运行程序,此时就是建立二叉树的过程,例如输入序列-+a  *b  -c  d  /e  f  输入过程中不要加回车,因为回车也有对应的ASCII码,是要算字符的,输入完之后再按回车,用户界面上就能够看到结果了。

另外你必须会手动建立一棵二叉树,保证你输入的序列能构成一棵二叉树,否则你怎么输入,按最后按多少回车程序也不会结束!

六、源程序

#include "stdio.h"

#include "string.h"

#include "alloc.h"

#define NULL 0

typedef struct BiTNode

{

 char data;

 struct BiTNode *Lchild;

 struct BiTNode *Rchild;

}BiTNode,*BiTree;

BiTree Create()

{

 char ch;

 BiTree T;

 scanf("%c",&ch);

 if(ch==' ')

   T=NULL;

 else

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

     T->data=ch;

     T->Lchild=Create();

     T->Rchild=Create();

   }

return T;

}

void Preorder(BiTree T)

{

 if(T)

 {

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

  Preorder(T->Lchild);

  Preorder(T->Rchild);

 }

}

void Inorder(BiTree T)

{

 if(T)

 {

 Inorder(T->Lchild);

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

 Inorder(T->Rchild);

 }

}

void Postorder(BiTree T)

{

 if(T)

 {

  Postorder(T->Lchild);

  Postorder(T->Rchild);

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

 }

}

main()

{

 BiTree T;

 clrscr();

 printf("The elements is : ");

 T=Create();

 printf("\n");

 printf("The Preorder's result is : ");

 Preorder(T);

 printf(" \n\n");

 printf("The Inorder's result is : ");

 Inorder(T);

 printf("\n\n");

 printf("The Postorder's result is : ");

 Postorder(T);

 getch();

}

七、测试数据

                                    

八、测试结果

 先序遍历序列:-,+,a,*,b,-,c,d,/,e,f ;

  中序遍历序列:a,+,b,*,c,-,d,-,e,/,f ;

后序遍历序列:a,b,c,d,-,*,+,e,f,/,- ;

更多相关推荐:
实验六 二叉树实验报告(1)

实验四二叉树的操作班级:计算机1002班姓名:**学号:**完成日期:20XX.6.14题目:对于给定的一二叉树,实现各种约定的遍历。一、实验目的:(1)掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法…

二叉树实验报告

实验六树和二叉树的操作一实验目的1进一步掌握树的结构及非线性特点递归特点和动态性2进一步巩固对指针的使用和二叉树的三种遍历方法建立方法二实验内容二叉树的实现和运算三实验要求1用CC完成算法设计和程序设计并上机调...

数据结构二叉树操作实验报告

实验报告指导教师XX实验时间20xx年11月1日学院计算机学院专业信息安全班级XXXXXX学号XXXXX姓名XX实验室S331实验题目二叉树操作实验要求采用二叉树链表作为存储结构完成二叉树的建立先序中序和后序以...

二叉树基本操作--实验报告

宁波工程学院电信学院计算机教研室实验报告一实验目的1熟悉二叉树树的基本操作2掌握二叉树的实现以及实际应用3加深二叉树的理解逐步培养解决实际问题的编程能力二实验环境1台WINDOWS环境的PC机装有VisualC...

二叉树操作实验报告

XX学院实验报告1234五实验总结和思考填写收获和体会分析成功或失败的原因收获只有通过不断练习才能获取经验避免下次犯同样的错误成功和失败在实验过程中遇到了一些细节性的问题不好寻找导致结果错误结果找到了问题所在发...

二叉树实验报告

二叉树实验报告问题描述1问题描述用先序递归过程建立二叉树存储结构二叉链表输入数据按先序遍历所得序列输入当某结点左子树或右子树为空时输入号如输入abcde得到的二叉树为编写递归算法计算二叉树中叶子结点的数目按凹入...

二叉树操作实验报告

实验报告姓名班级12南航网络学号

C++二叉树基本操作实验报告

一实验目的选择二叉链式存储结构作为二叉树的存储结构设计一个程序实现二叉树的基本操作包括建立输出前序遍历中序遍历后序遍历求树高统计叶子总数等二实验开发环境Windows81中文版MicrosoftVisualSt...

二叉树操作实验报告

实验报告实验名称对二叉树的操作实验内容1按中序遍历结果从小到大的顺序建立一棵含有n个结点的二叉树采用二叉链表存储2中序前序后序改二叉链表3输入一个数据访问任一结点进行查找如果有则返回查找成功没有则返回查找不成功...

数据结构树和二叉树实验报告

数据结构课程实验报告注空间不够可以增加页码

数据结构-二叉树实验报告

数据结构实验报告课程数据结构实验名称二叉树实验院系电信学院专业班级计科104姓名学号一实验构思首先构造二叉树的存储结构用data存储当前节点的值分别用lchildrchild表示该节点的左右孩子然后应用BiTr...

数据结构实验三——二叉树基本操作及运算实验报告

39985504doc数据结构与数据库实验报告实验题目二叉树的基本操作及运算学院化学与材料科学学院专业班级09级材料科学与工程系PB0920xx3姓学邮名李维谷号PB0920xx85箱liwgmail指导教师贾...

二叉树的操作实验报告(30篇)