《数据结构》实验报告【DOC精选】
南昌航空大学
实
验
报
告
课程名称: 数据结构
准考证号: 036811300371
姓 名: 刘林生
指导老师: 廖丽老师
二叉树的建立及输出实验目的
熟悉二叉链表表示的二叉树结构及其递归遍历,掌握建立二叉链表要领,深入理解递归遍历二叉链表的执行路径。
实验内容
(1)建立一颗二叉链表表示的二叉树;
(2)对其进行前序,中序,后序输出。
实验要求
先将二叉树通过加入虚节点的方式使其完全化,然后按层将其输入。可以用二叉树中不会出现字符表示虚节点例如@,另一二叉树中不会出现的字符表示输入序列结束例如#。如下二叉树须输入序列a@b@@@c# 。或以广义表的形式输入二叉树的节点。按先序,中序,后序序列将其遍历输出。
五、 实验步骤
//A.Header Files Source Files bitree.cpp
#include"bitree.h"
int main(int argc, char* argv[])
{
int array[] = {5,6,3,7,67,1,24,8,21,16,78,9};
Tree tr(array, sizeof(array)/sizeof(array[0]));
tr.traverse();
return 0;
}
//B. Header Files bitree.h
#include
#include
//here delete #include
using namespace std;
typedef int telemtype;
struct bitnode //change to typedef struct bitnode and it will be
//'typedef ' : ignored on left of 'struct bitnode' when no variable is declared at last it will be ok
{
bitnode* lchild;
bitnode* rchild;
telemtype data;
bitnode(int e=0, bitnode* left=NULL, bitnode* right=NULL)
{
data = e;
lchild = left;
rchild = right;
}
};
class Tree
{
public:
Tree()
{
root = NULL;
}
Tree(int array[], int size);
~Tree();
void traverse();
void postTraverse();
void recur_postTraverse(bitnode* cur);
void preTraverse();
void recur_preTraverse(bitnode* cur);
void inTraverse();
void recur_inTraverse(bitnode* cur);
private:
Tree(const Tree& t);
Tree& operator=(const Tree& t);
bitnode* createTree(int array[], int size);
void destroyTree(bitnode* cur);
private:
bitnode* root;
};
Tree::Tree(int array[], int size)
{
if ((array==NULL)||(size<=0))
root = NULL;
else
root = createTree(array, size);
}
//create a tree
bitnode* Tree::createTree(int array[], int size)
{
if ((array==NULL)||(size<=0))
return NULL;
int mid=size/2;
bitnode* cur=new bitnode(array[mid]);
cur->