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

📄 tree.h

📁 数据结构算法 vc++6.0 的程序集包含所有章节,适合学习数据结构,把数据结构的算法都用vc实现了 。数据结构算法 vc++6.0 的程序集。
💻 H
字号:
//树的孩子兄弟表示法为存储结构的结构体Tree.h
template<class T> class Tree;
template<class T> struct TreeNode
{friend class Tree<T>;//树类为友元
 private:
  TreeNode<T> *firstChild;//第一个孩子结点指针域
  TreeNode<T> *nextSibling;//下一个兄弟结点指针域
 public:
  T data;//数据域
//构造函数
  TreeNode(T value,TreeNode<T> *fc=NULL,
    TreeNode<T> *ns=NULL):data(value),
     firstChild(fc),nextSibling(ns){}
//访问指针域的成员函数
  TreeNode<T>* &FirstChild()
   {return firstChild;}
  TreeNode<T>* &NextSibling()
   {return nextSibling;}
};
//树类
template<class T> class Tree
{private:
  TreeNode<T> *root;//根结点指针
  TreeNode<T> *curr;//当前结点指针
  //显示以t为先根结点的树的数据域
  void PreOrderTree(TreeNode<T> *&t);
  //显示以t为后根结点的树的数据域
  void PosOrderTree(TreeNode<T> *&t);
  //使当前结点为t所指结点
  int Current(TreeNode<T> *&t);
  //在树root中回溯查找结点s的双亲结点
  TreeNode<T> *SearchParent(TreeNode<T> *&root,TreeNode<T> *&s);
 public:
  //构造函数与析构函数
  Tree(){root=curr=NULL;}
  ~Tree(){DeleteSubTree(root);}
  //使根结点为当前结点
  int Root();
  //使当前结点的双亲结点为当前结点
  int Parent();
  //使当前结点的第一个孩子结点为当前结点
  int FirstChild();
  //使当前结点的兄弟结点为当前结点
  int NextSibling();
  //把valve插入到当前结点的最后一个结点
  void InsertChild(T value);
  //删除以t为根结点的子树
  void DeleteSubTree(TreeNode<T> *&t);
  //删除当前结点的第i个孩子结点
  int DeleteChild(int i);
  //删除以root为根结点的子树的第i个孩子结点
  int DeleteChild1(int i);
  //按先根遍历次序显示树的数据域值
  void DisplayTree();
  //按后根遍历次序显示树的数据域值
  void DisplayTree1();
};
  
  

⌨️ 快捷键说明

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