大话数据结构 树

树的定义

树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中,有且仅有一个特定的称为根(Root)的结点,当n>1时,其余结点可分为m(m>0)个互不相交有限集T1,T2。。。Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。

对于树的定义还要强调2点:

(1)n>0时根结点是唯一的,不可能存在多个根结点,只能有一个根结点。

(2)m>0时子树的个数没有限制,但他们一定是互不相交的。

树的结点包含一个数据元素以及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或者终端结点。度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层,树中结点的最大层次称为树的深度(Depth)或者高度。

如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。

森林是m(m>=0)棵互不相交的树的集合。

树的存储结构

(1)双亲表示法

我们假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。也就是说,每个结点除了知道自己是谁以外,还知道它的双亲在哪里。

双亲表示法

其中data是数据域,存储结点的数据信息,而parent是指针域,存储该结点的双亲在数组中的下标。

由于根结点没有双亲,所以我们约定根结点的设置域为-1,这就意味者,所有的根结点都存有他双亲的位置。

双亲表示法


(2)孩子表示法

由于树中每个结点可能有多颗子树,可以考虑用多重链表,即每个结点有多个指针域,其中每个指针指向一颗子树的根结点,我们把这种方法叫做多重链表表示法。

(3)孩子兄弟表示法

任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,184评论 0 13
  • 代码GitHub地址 树 无论是链表,栈还是队列,它们都是线性结构的,每个节点的左边最多一个节点,右边也最多一个节...
    HikariCP阅读 656评论 0 3
  • 1.树和二叉树的定义 (1) 树的定义 树是n (n≥0) 个结点的有限集。 n=0 时称为空树。在任意一棵非空树...
    yinxmm阅读 2,505评论 0 3
  • 1.树(Tree): 树是 n(n>=0) 个结点的有限集。当 n=0 时称为空树。在任意一颗非空树中:有且仅有一...
    ql2012jz阅读 1,109评论 0 3
  • 今天的网络是愤怒的。因为一个章姓人。他做了一个回应,这篇回应从危机公关上来评判,显然是灾难现场。大大失策。那么想想...
    简的四季笔记阅读 181评论 1 1