《数据结构》实验五: 树和二叉树实验
一..实验目的
巩固树和二叉树的相关知识,特别是二叉树的相关内容。学会运用灵活应用。
1.回树和二叉树的逻辑结构和存储方法,清楚掌握树和二叉树的遍历操作。
2.学习树的相关知识来解决实际问题。
3.进一步巩固程序调试方法。
4.进一步巩固模板程序设计。
二.实验时间
准备时间为第10周到第12前半周,具体集中实验时间为12周周四。2个学时。
三..实验内容
1.自己设计一个二叉树,深度最少为4,请递归算法分别用前序、中序、后序遍历输出树结点。
Bitree.h
#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
Bitree.cpp
#include<iostream> using namespace std; #include "Bitree.h" Binode *Bitree::Creat(Binode *bt) { char ch; cout<<"请输入创建一棵二叉树的结点数据"<<endl; cin>>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<<bt->data<<" "; Preorder(bt->lchild); Preorder(bt->rchild); } } void Bitree::Inorder(Binode *bt) { if(bt==NULL) return; else{ Inorder(bt->lchild); cout<<bt->data<<" "; Inorder(bt->rchild); } } void Bitree::postorder(Binode *bt) { if(bt==NULL) return; else{ postorder(bt->lchild); postorder(bt->rchild); cout<<bt->data<<" "; } }
Bitree_main.cpp
#include<iosream> using namespace std; #include "Bitree.h" int main() { Bitree T; cout<<"--------前序遍历--------"<<endl; T.Preorder(); cout<<endl; cout<<"--------中序遍历--------"<<endl; T.Inorder(); cout<<endl; cout<<"--------后序遍历--------"<<endl; T.postorder(); cout<<endl; return 0; }
本人能力有限不会调试
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。