⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdafx.h

📁 里面装有 5 个小程序
💻 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 + -