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

📄 二叉树类.h

📁 数据结构:二叉树
💻 H
字号:
//定义二叉树的头文件“二叉树类.h”
//定义二叉树结点值的类型为字符型
typedef char ElemType;

//定义二叉树结点类型
struct BTreeNode{
	ElemType data;
	BTreeNode* left;
	BTreeNode* right;
};

//根据存于字符数组a的二叉树广义表建立对应的二叉树存储结构
void CreateBTree(BTreeNode* & BT,char* a);
//前序遍历算法
void PreOrder(BTreeNode* BT);
//中序遍历算法
void InOrder(BTreeNode* BT);
//后序遍历算法 
void PostOrder(BTreeNode* BT);
//按层遍历算法
void LevelOrder(BTreeNode* BT);
//从二叉树中查找值为x的结点,若存在则由x带回完整值并返回真,否则返回假
bool FindBTree(BTreeNode* BT, ElemType& x);
//按照二叉树的一种表示方法输出整个二叉树
void PrintBTree(BTreeNode* BT);
//清除二叉树,使之成为一棵空树
void ClearBTree(BTreeNode* BT);
//求二叉树的深度
int BTreeDepth(BTreeNode* BT);
//求二叉树中所有结点数
int BTreeCount(BTreeNode* BT);
//求二叉树中所有叶子结点数
int BTreeLeafCount(BTreeNode* BT);
//返回x结点所处的层号,若不存在值为x的结点则返回0
int NodeLevel(BTreeNode* BT,ElemType x);


//定义二叉树类
class BinaryTree{
	BTreeNode* root;
public:
	//初始化二叉树为空
	BinaryTree(){root=NULL;}
	//根据存于字符数组a的二叉树广义表建立对应的二叉树存储结构
	void CreateBTree(char* a){::CreateBTree(root,a);}
	//判断二叉树是否为空
	bool BtreeEmpty(){return root==NULL;}
	//按任意一种递归遍历次序输出二叉树中所有结点
	void TraverseBTree(int mark);
	//求二叉树的深度
	int BTreeDepth(){return ::BTreeDepth(root);}
	//求二叉树所有结点数
	int BTreeCount(){return ::BTreeCount(root);}
	//求二叉树中所有叶子结点数
	int BTreeLeafCount(){return ::BTreeLeafCount(root);}
	//按照二叉树中查找的一种表示方法输出整个二叉树
	void PrintBTree(){::PrintBTree(root);}
	//从二叉树中查找值为item的结点
	bool FindBTree(ElemType& item){return ::FindBTree(root,item);}
	//返回x结点所处的层号,若不存在值为x的结点则返回0
	int NodeLevel(ElemType x){return ::NodeLevel(root,x);}
	//清除二叉树
	~BinaryTree(){::ClearBTree(root);}
};


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -