资源简介

合肥工业大学数据结构试验五树和森林 包括完整的实验要求、实验预习报告、实验最终报告 实验要求: 将一棵树(或森林)转换为二叉树。 求森林的高度。 按层次方式遍历森林。 输出一个森林中每个结点的值及其对应的层次数。 输出一个森林的广义表形式

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;

template 
struct treeNode{
    Element_type data;
    treeNode *nextson *nextbrother;
};

template 
class tree{
    public:
        tree();                                             //构造函数
        tree( const char * file );                          //根据输入文件构造森林
        ~tree();                                            //析构函数
        int height()const ;                                 //返回森林的高度
int height(treeNode  * node)const;
void build(const char * filename);                //建立森林
void traversal()const;                            //按层次遍历
void traversal( treeNode  * node)const;
void preOrder()const;                             //先序输出结点值和高度
void preOrder( treeNode  * node  int i)const;
void clear();                                     //删除森林
void clear(treeNode  * node);
void printGeneralize()const;                      //输出广义表形式
void printGeneralize(treeNode  * node)const;
    private:
void creatNode(treeNode  * node);
        treeNode * root;
ifstream file;
};
template 
tree  :: tree(){
    root=NULL;
}
template 
tree  :: tree(const char * filename){
root=NULL;
build(filename);
}
template 
tree  :: ~tree(){
clear();
}
template 
void tree  ::build(const char * filename){
if (root!=NULL) {
clear();
}
char name[40];
int child; 
Element_type data;
file.open(filename);
file>>name>>child;
if (child==0){
file>>data;
root=new treeNode ;
root->data=data;
root->nextson=NULL;
root->nextbrother=NULL;
creatNode(root);
}
else root=NULL;
file.close();
}
template 
int tree:: height()const{
return height(root);
}
template 
int tree:: height(treeNode  * node)const{
if (node==NULL)
return 0;
int ihe1ihe2;
ihe1=height(node->nextson)+1;
ihe2=height(node->nextbrother);
if(ihe1>ihe2)
return ihe1;
else return ihe2;
}
template 
void tree:: traversal()const{
traversal(root);
}
template 
void tree:: traversal( treeNode  * node)const{
list  * > li;
treeNode  * te *top;
if (root!=NULL){
li.push_back(root);
    te=root->nextbrother;
    while (te!=NULL){
    li.push_back(te);
    te=te->nextbrother;
}
}
while (!li.empty()){
top=li.front();
te=top->nextson;
while (te!=NULL){
li.push_back(te);
te=te->nextbrother;
}
cout<data;
li.pop_front();
}
}
template 
void tree:: p

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5508  2009-05-17 23:33  数据结构试验五\Tree.cpp

     文件     630342  2009-06-23 11:07  数据结构试验五\Tree.exe

     文件        305  2001-04-05 17:56  数据结构试验五\TREE1.TRE

     文件        557  2001-04-05 17:56  数据结构试验五\TREE2.TRE

     文件     418566  2009-04-26 11:36  数据结构试验五\实验五.pdf

     文件      61440  2009-07-29 22:27  数据结构试验五\数据结构实验五最终报告.doc

     文件      46080  2009-07-29 22:27  数据结构试验五\数据结构实验五预习报告.doc

     目录          0  2009-07-29 22:48  数据结构试验五

----------- ---------  ---------- -----  ----

              1162798                    8


评论

共有 条评论