您的位置:首页 > 理论基础 > 数据结构算法

数据结构试验四

2015-11-12 12:40 591 查看

一、实验目的

巩固树和二叉树的相关知识,特别是二叉树的相关内容。学会运用灵活应用。

1.回树和二叉树的逻辑结构和存储方法,清楚掌握树和二叉树的遍历操作。

2.学习树的相关知识来解决实际问题。

3.进一步巩固程序调试方法。

4.进一步巩固模板程序设计。

二、实验内容

1.自己设计一个二叉树,深度最少为4,请递归算法分别用前序、中序、后序遍历输出树节点。

源代码如下:

头文件tree.h

#ifndef tree_H
#define tree_H
struct node
{
char data;
node*lchild, *rchild;
};
class tree
{
public:
tree(){ root = creat(root); }
~tree(){ release(root); }
void preorder(){ preorder(root); }
void inorder(){ inorder(root); }
void postorder(){postorder(root);}
void leverorder(){ leverorder(root); }
private:
node*root,*d;
int rear, front;
node* c[100000];
node*creat(node*a);
void release(node*a);
void preorder(node*a);
void inorder(node*a);
void postorder(node*a);
void leverorder(node*a);
};
#endif


源文件tree.cpp

#include<iostream>
using namespace std;
#include"tree.h"

node*tree::creat(node*a)
{
char b;
cout << "请输入创建一棵二叉树的节点数据" << endl;
cin >> b;
if (b == '#')return NULL;
else
{
a = new node;
a->data = b;
a->lchild = creat(a->lchild);
a->rchild = creat(a->rchild);
}
return a;
}

void tree::release(node*a)
{
if (a != NULL)
{
release(a->lchild);
release(a->rchild);
delete a;
}
}

void tree::preorder(node*a)
{
if (a ==NULL)return;
else{
cout << a->data<<" ";
preorder(a->lchild);
preorder(a->rchild);
}
}

void tree::inorder(node*a)
{
if (a ==NULL)return;
else{
preorder(a->lchild);
cout << a->data << " ";
preorder(a->rchild);
}
}

void tree::postorder(node*a)
{
if (a == NULL)return;
else{
postorder(a->lchild);
postorder(a->rchild);
cout << a->data << " ";
}
}

void tree::leverorder(node*a)
{
rear = front = -1;
if (root == NULL)return;
c[++rear] = root;
while (rear != front)
{
d = c[++front];
cout << d->data << " ";
if (d->lchild != NULL)c[++rear] = d->lchild;
if (d->rchild != NULL)c[++rear] = d->rchild;
}
}


源文件main.cpp

#include<iostream>
using namespace std;
#include "tree.h"

int main()
{
tree t;
cout << "前序遍历:" << endl;
t.preorder();
cout << endl;
cout << "中序遍历:" << endl;
t.inorder();
cout << endl;
cout << "后序遍历:" << endl;
t.postorder();
cout << endl;
cout << "层序遍历:" << endl;
t.leverorder();
cout << endl;
system("pause");
return 0;
}


运行效果如下:



三、总结

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 二叉树