一、实验目的
熟练理解树和二叉树的相关概念,掌握的存储结构和相关操作实现;
掌握树的链式存储结构的实现;
二、实验过程
#ifndef BiTree_H
#define BiTree_H
struct BiNode
{
char data;
BiNode *lchild, *rchild;
};
class BiTree
{
public:
BiTree(){root=Creat(root);}
~BiTree(){Release(root);}
void PreOrder(){PreOrder(root);}
void InOrder(){InOrder(root);}
void PostOrder(){PostOrder(root);}
private:
BiNode *root;
BiNode *Creat(BiNode *bt);
void Release(BiNode *bt);
void PreOrder(BiNode *bt);
void InOrder(BiNode *bt);
void PostOrder(BiNode *bt);
};
#endif
#include
using namespace std;
#include"Bitree.h"
BiNode*BiTree::Creat(BiNode *bt)
{
char ch;
cout<<"请输入创建一棵二叉树的结点数据"<
>ch;
if(ch=='#')return NULL;
else{
bt=new BiNode;
bt->data=ch;
bt->lchild=Creat(bt->lchild);
bt->rchild=Creat(bt->rchild);
}
return bt;
}
void BiTree::Release(BiNode *bt)
{
if(bt!=NULL){
Release(bt->lchild);
Release(bt->rchild);
delete bt;
}
}
void BiTree::PreOrder(BiNode *bt)
{
if(bt==NULL)return;
else{
cout<
data<<"";
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
void BiTree::InOrder(BiNode *bt)
{
if(bt==NULL)return;
else{
InOrder(bt->lchild);
cout<
data<<"";
InOrder(bt->rchild);
}
}
void BiTree::PostOrder(BiNode *bt)
{
if(bt==NULL)return;
else{
PostOrder(bt->lchild);
PostOrder(bt->rchild);
cout<
data<<""; } } #include
using namespace std; #include"Bitree.h" int main() { BiTree T; cout<<"------前序遍历------"<
三、实验心得
学习了二叉树,是很有意思的一种数据结构。虽然理论知识略懂,但实际操作的时候还是感觉很欠缺,输出双亲、孩子结点部分未能实现,正在努力学习中。