二叉树的类定义由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“二叉树定义”。
实验一、二叉树的类定义
程序说明
1、改程序用二叉链存储结构将其生成一棵二叉树;
2、分别用三种遍历算法将二叉树的遍历序列输出;
3、用括号表示法输出二叉树。
二叉树的形状
A
程序代码
#include “stdafx.h” #include using std::cin;using std::cout;using std::endl;using namespace std;typedef struct CZYP_BTNode {
char data;
struct CZYP_BTNode *left;
//左孩子指针
struct CZYP_BTNode *right;// 右孩子指针
} *BiTree;
void CreateBiTree(BiTree &T){
// 在先序遍历二叉树的过程中输入二叉树的“先序字符串”,// 建立根指针为 T的二叉链表存储结构。在先序字符串中,// 字符'#'表示空树,其它字母字符为结点的数据元素
char ch;
cin >> ch;
if(ch=='#')
{
T=NULL;// 建空树
} else {
T = new CZYP_BTNode;
// “访问”操作为生成根结点
T->data = ch;
CreateBiTree(T->left);
// 递归建(遍历)左子树
CreateBiTree(T->right);
// 递归建(遍历)右子树
}
}
//先序遍历以T为根指针的二叉树 void PreOrder(BiTree &T){
if(T)
{
// T=NULL时,二叉树为空树,不做任何操作
coutdata
PreOrder(T->left);
// 先序遍历左子树
PreOrder(T->right);
// 先序遍历右子树
} }
//中序遍历以T为根指针的二叉树 void InOrder(BiTree &T){
if(T){
// T=NULL时,二叉树为空树,不做任何操作
InOrder(T->left);// 先序遍历左子树
coutdata
InOrder(T->right);// 先序遍历右子树
} } //后序遍历以T为根指针的二叉树 void PostOrder(BiTree &T){
if(T){
// T=NULL时,二叉树为空树,不做任何操作
PostOrder(T->left);// 先序遍历左子树
PostOrder(T->right);// 先序遍历右子树
coutdata
} } //用括号表示法输出二叉树 void DispBTree(BiTree &bt){ if(bt!=NULL){
coutdata;
if(bt->right!=NULL||bt->left!=NULL)
{
cout
DispBTree(bt->left);
if(bt->right!=NULL)cout
DispBTree(bt->right);
cout
} } }
int main(){
cout
BiTree T;
CreateBiTree(T);
cout
PreOrder(T);
cout
InOrder(T);
cout
PostOrder(T);
cout
return(0);}
心得体会
在这次实验中,我花了很多的时间。最重要的体会就是我的知识却是很少。在做这次试验之前我仔细的看了一遍树的三种遍历的伪代码。对程序中用到的递归思想有了更深刻的认识,并且我也借鉴了老师PPT上的很多程序的写法。再者就是我从网上找了一些二叉树的写法,然后通过自己修改、调试。在这里我想说一下,我调试的时候很多错误都不知道从哪里找,后来我就把出现的错误信息输入到baidu里,事实证明这样确实很有效。终于没有错误了。Happy!!
今天调试了一上午,虽说很累,但是我确确实实感到学到了很多知识。不足之处
这个程序的int isEmpty()函数没有实现,需要改天写出来。
一、给定二叉树如下图所示,编程完成下列要求:
1、用二叉链存储结构将其生成一棵二叉树;
2、分别用三种遍历算法将二叉树的遍历序列输出;
3、用括号表示法输出二叉树。G D B E A
C F H 上面是个图。。由于我分不多了,所以不是很多。但是我很想学这方面知识,到时我有分了再给你叫啊。高手帮忙啊。问题补充:
我把图详细说下。A是树根;B、C分别是A的左右孩子;D、E分别是B的左右孩子;G是D的右孩子;F是C的右孩子;H是F的左孩子。相信我已经表达清楚了吧。谢谢各位大虾了。
VC++怎样定义类对象如果你定义了一个类(假设是A)那么声明一个A的对象的方法就是:A a;// a 就是一个A的对象A *a;// a 就是一个A的对象的指针A a[N];// a 就是一个A的对象的数组......
在定义银行类时,若取钱数大于余额则作为异常处理(InsufficientFundsException).思路:产生异常的条件是余额少于取额, 因此是否抛出异常要判断条件取钱是withdrawal([wið'dr......
如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, W......
实验报告 二叉树一 实验目的1、进一步掌握指针变量,动态变量的含义;2、掌握二叉树的结构特性以及各种存储结构的特点及适用范围。3、掌握用指针类型描述、访问和处理二叉树的......
目录一 设计思想 ..........................................2 1递归遍历二叉树算法思想:.......................................2 2非递归遍历二叉树算法思想:.................