📄 stdafx.h
字号:
/*
实验题目:二叉的遍历
开发思想:本实验分别用了递归和非递归来实现前序、中序、后序
方式的遍历二叉树,还实现了层次遍历,并求出树高。
在这些实现中,主要用到的是队列链和链栈。
开发人员:葛兴高
开发日期:2004、10、29
*/
#if !defined(AFX_STDAFX_H__7F1144C4_7286_4B6F_9810_21C0C06D6551__INCLUDED_)
#define AFX_STDAFX_H__7F1144C4_7286_4B6F_9810_21C0C06D6551__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <fstream.h>
#include <stdio.h>
#include <conio.h>
//-------------------------------------------
//-------------------------------------------
//定义树结点的类型
typedef char DataType;
//树结点
struct TreeNode
{
DataType data;
TreeNode *lchild;
TreeNode *rchild;
};
//树类
class BuildTree
{
public:
//构造函数,初始化链表
BuildTree();
//析构函数
~BuildTree(void);
//建立一棵二叉树
//初始化树为空
void Create();
//前序遍历,用递归算法
//结果:输出前序遍历的结果
void PreOrder_1(TreeNode *t,int first,int i);
//前序遍历,用非递归算法
//结果:输出前序遍历的结果
void PreOrder_2(TreeNode *t);
//中序遍历,用递归算法
//结果:输出中序遍历的结果
void InOrder_1(TreeNode *t,int first,int i);
//中序遍历,用非递归算法
//结果:输出中序遍历的结果
void InOrder_2(TreeNode *t);
//后序遍历,用递归算法
//结果:输出后序遍历的结果
void PostOrder_1(TreeNode *t,int first,int i);
//后序遍历,用非递归算法
//结果:输出后序遍历的结果
void PostOrder_2(TreeNode *t);
//层次遍历
//结果:输出层次遍历的结果
void LayerOrder(void);
//求树的高
//返回树的高
int GetHigh(TreeNode *t,int first);
//一个用来保存遍历结果的数组
char Record[100];
public:
//定义一个根结点,也就是链式存储的链头
TreeNode *head;
};
//-------------------------------------------
//-------------------------------------------
//-------------------------------------------
//链队的结点
struct QueNode
{
TreeNode* data;//定义成指针类型的数据
QueNode *next;
};
//链队的类
class Queue
{
public:
QueNode *front;
QueNode *rear;
public:
//结构函数
//初始化链队,并为链式队列的链头分配空间
Queue( )
{
QueNode * temp;
temp=new QueNode;
front=rear=temp;
}
//析构函数
~Queue(void);
//入列
//结果:把当前指针入列
void EnQueue(TreeNode* x);
//出列
//结果:返回一个指针型数据
TreeNode* DelQueue();
//判断队列是否为空
int IsEmpty()
{
if(front == rear)
return 1;
else return 0;
}
};
//-------------------------------------------
//-------------------------------------------
//栈类
struct LinkNode1
{
int data;
LinkNode1 *next;
};
struct LinkNode //链栈结点
{
TreeNode* data;//存放指针
LinkNode *next;
};
//定义一个堆栈,用来遍历搜索的过程
class stack
{
public:
//构造函数,并初始化
stack()
{
Top=NULL;
}
//析构函数
~stack();
//入栈
TreeNode* Pop();
int Pop1();
//出栈
void Push(TreeNode *x);
void Push1(int i);
//判空
int IsEmpty();
int IsEmpty1();
private:
//栈顶指针
LinkNode *Top;
LinkNode1 *Top1;
};
#endif // !defined(AFX_STDAFX_H__7F1144C4_7286_4B6F_9810_21C0C06D6551__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -