📄 二叉树类.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 + -