树的定义

Posted 勇士后卫头盔哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的定义相关的知识,希望对你有一定的参考价值。

前言


树是一种非线性的数据结构,树是由n(n>=0)个结点组成的有限集合,如果n=0称为空树,如果n>0则包含根结点,根结点只有直接后继,但没有直接前驱,除根以外的其他结点划分为m(m>=0)个互不相交的有限集合T0,T1…Tm-1,每个集合又是一颗树,并且称之为根的子树(sub tree),可以看出树也是递归的一种
树中度的概念

1.树的结点包含一个数据及若干指向子树的分支
2.结点拥有的子树数目称为结点的度
  度为0的结点称为叶结点
  度不为0的结点称为分支结点
3.树的度定义为所有结点中度的最大值

如上图所示,K结点的度为0,H结点的度为1,A结点的度为3,所以该树的度为3
树中的前驱和后继

1.结点的直接后继称为该结点的孩子,相应的该结点称为孩子的双亲
2.结点的孩子的孩子的....称为该结点的子孙,相应的该结点称为子孙的祖先
3.同一个双亲的孩子之间互称兄弟

入上图所示,K和L为兄弟,A为BCD的双亲,D为HIJS的双亲,特别注意的是树中结点的最大层次称为树的深度或高度,即上述树的高度为4
树的存储与定义

上图是树的类图,GTree为通用树结构,每个结点可以存在多个后继结点,GTreeNode能够包含任意多指向后继结点的指针,实现树结构的所有操作,GTree的实现架构如下所示

GTree.h

#ifndef GTREE_H
#define GTREE_H
#include "Tree.h"
#include "GTreeNode.h"
namespace CGSLib

  template <typename T>
  class GTree : public Tree<T>
  
     public:
     bool insert(TreeNode<T>* node)
      
         bool  ret = true;
         return ret;
      
      bool insert(const T& e,TreeNode<T>* parent)
      
          bool  ret = true;
          return ret;
      
      SharedPointer< Tree<T> > remove(const T& value)
      
           return NULL;
      
      SharedPointer< Tree<T> > remove(TreeNode<T>* node)
      
           return NULL;
      
      GTreeNode<T>* find(const T& value)const
      
           return NULL;
      
      GTreeNode<T>* find(TreeNode<T>* node)const
      
          return NULL;
      
      GTreeNode<T>* root()const
      
          return dynamic_cast<GTreeNode<T>*>(this->m_root);
      
      int degree()const
      
          return 0;
      
      int count()const
      
           return 0;
      
      int height()const
      
             return 0;
      
      void clear()
      
           this->m_root = NULL;
      
      ~GTree()
      
          clear();
      
  ;


#endif // GTREE_H

GTreeNode.h

#ifndef GTREENODE_H
#define GTREENODE_H
#include "Tree.h"
#include "LinkList.h"
namespace CGSLib

   template <typename T>
   class GTreeNode : public TreeNode<T>
   
      public:
      LinkList< GTreeNode<T>* > child;
   ;

#endif // GTREENODE_H

以上是关于树的定义的主要内容,如果未能解决你的问题,请参考以下文章

树的遍历

博客作业04--树

数据结构之树的基本概念性质

二叉树的相关定义及实现

数据结构二叉树

树(基本概念及存储结构)