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

📄 bintree.h

📁 树的建立算法和树的遍历操作。。。下载解压即可
💻 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 + -