資源簡介
合肥工業大學數據結構試驗五樹和森林
包括完整的實驗要求、實驗預習報告、實驗最終報告
實驗要求:
將一棵樹(或森林)轉換為二叉樹。
求森林的高度。
按層次方式遍歷森林。
輸出一個森林中每個結點的值及其對應的層次數。
輸出一個森林的廣義表形式

代碼片段和文件信息
#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
評論
共有 條評論