数据结构二叉树的遍历实验上机
一、【实验目的】
1、 了解二叉树的前序、中序、后序和层次序列排列;
2、 将C语言同二叉树的数据结构联系起来;
3、 掌握生成的二叉树的链表结构;
4、 掌握如何按层次输出二叉树的所有结点;
5、 掌握如何将动态二叉树转换为静态二叉链表。
二、【实验内容】
创建一个二叉树,对这棵动态二叉树进行分析,将其用静态二叉链表表示。二叉树的动态二叉链表结构中的每个结点有三个字段:data,lchild,rchild。静态二叉链表是用数组作为存储空间,每个数组元素存储二叉树的一个结点,也有三个字段:data,lchild,rchild。lchild和rdhild分别用于存储左右孩子的下标。
三、【实验步骤与要求】
1、实验前的准备
(1)了解二叉树的基本概念;
(2)了解二叉树的基本结构。
2、上机操作
(1)了解二叉树的前序、中序、后序和层次排列;
(2) 将C语言同二叉树的数据结构联系起来;
(3) 掌握生成的二叉树的链表结构;
(4) 掌握如何按层次输出二叉树的所有结点;
(5) 掌握如何将动态二叉树转换为静态二叉链表。
#include<stdio.h>
#include<stdlib.h>
static int length=0;//二叉树结点个数
typedef struct Array//静态二叉链表节点
{
char data;
int lchild; //存左孩子的下标
int rchild; //存右孩子的下标
}Array;
Array Tree[20];//空的静态二叉树
typedef struct BiTNode //动态二叉链表节点
{
char data;
struct BiTNode *lchild,*rchild;//指向左右孩子的指针
}BiTNode,*BiTree;
BiTree CreateBiTree()//按先序构造动态二叉树,空格表示空树
{
char ch;
BiTree T;
scanf("%c",&ch);
if(ch=='#')
T=NULL; //'#'表示空树
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch; //为根数据域赋值
T->lchild=CreateBiTree();//为左孩子数据域赋值