📄 bintree.h
字号:
#ifndef BinTree_H
#define BinTree_H
#include <iostream>
#include <vector>
using namespace std;
// 二叉树结点的结构定义
template <class T>
struct BinTreeNode
{ T data;
BinTreeNode<T> *lchild, *rchild;
};
// 二叉树类定义
template <class T>
class BinTree
{
BinTreeNode<T>* m_Root;
public:
BinTree();
~BinTree();
BinTree(vector<T> &pre); // 根据pre创建二叉树
BinTree(vector<T> &pre,vector<T> &mid);
BinTree(BinTree &tree); // 复制树对象
void Free(); // 释放整个树的空间
void TraverseDFS(int kind); // 深度遍历二叉树
void TraverseBFS(); // 层次(广度)遍历二叉树
int GetTreeCount(int n); // 计算相似树的个数
int GetHeight(); // 计算高度
int GetCount(); // 计算结点数
BinTreeNode<T> *Search(T e); // 查找
BinTreeNode<T> *SearchParent(T e); // 查找父结点
private:
// 仅与BinTree(vector<T> &pre)相关的私有成员
// 仅与BinTree(vector<T> &pre,vector<T> &mid)相关的私有成员
vector<T> m_pre; int m_prei;
vector<T> m_mid;
BinTreeNode<T> *DoCreateByPre();
BinTreeNode<T> *DoCreateByPreMid(int ipre,int imid,int n);
// 仅与Free函数相关的私有成员
void DoFree(BinTreeNode<T> *p);
// 仅与TraverseDF函数相关的私有成员
void TraversePre(BinTreeNode<T> *p);
void TraverseMid(BinTreeNode<T> *p);
void TraversePost(BinTreeNode<T> *p);
// 仅与GetHeight函数相关的私有成员
int Height(BinTreeNode<T> *p);
// 仅与GetCount函数相关的私有成员
int Count(BinTreeNode<T> *p);
// 仅与Search函数相关的私有成员
BinTreeNode<T> *DoSearch(BinTreeNode<T> *p,T e);
// 仅与SearchParent函数相关的私有成员
BinTreeNode<T> *DoSearchParent(BinTreeNode<T> *p,T e);
// 仅与Copy函数相关的私有成员
BinTreeNode<T> *DoCopy(BinTreeNode<T> *p);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -