当前位置:   article > 正文

数据结构(C语言版)——8、树_c语言什么是树形结构

c语言什么是树形结构

8、树

(1)树的定义

树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。直观的看,树是以分支关系定义的层次结构。树是一种一对多的数据结构。
树 (Tree)是 n(n ≥ 0)个结点的有限集。n = 0 时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当 n > 1 时,其余结点可分为 m(m > 0)个互不相交的有限集 T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Sub Tree)。如下图所示。
在这里插入图片描述
上图为一个结点 n =13 的树,其中结点 A 为唯一根结点,其余结点分成 3 个互不相交的子集:T1 = { B,E,F,K,L },T2 = { C,G},T3 = { D,H,I,J,M };T1,T2,T3都是 A 的子树,且本身也是一个树。如下图所示。

在这里插入图片描述
另,例如 T1 ,其根为 B ,其余结点又可分为互不相交的子集:T11 = { E,K,L },T12 = { F }。如下图所示。
在这里插入图片描述
即树的结构定义是一个递归的定义,即在树的定义中又用到树的概念,它道出了树的固有特性。

(2)树的基本术语

树的结点包含一个数据元素及若干个指向其子树的分支。

  • 结点的度(Degree):指结点所拥有子树数。如上述的根结点 A 的度为 3。
  • 树的度:指树内各结点的度 的最大值。如上述树 A 的度为 3。
  • 叶子结点(Leaf):又称终端结点,指度为 0 的结点。如上述树中结点 K、L、F、G等。
  • 分支结点:指度不为 0 的结点,又称非终端结点。如上述树中的结点 A、B、C、D、E、G等。
  • 内部结点:指除根结点之外的分支结点。
  • 孩子(Child)与双亲(Parent):某个结点的子树 的根结点称为该结点的孩子;该结点称为这个孩子的双亲。如上述树中,D 是 A 的孩子,A 是 D 的双亲。
  • 兄弟(Sibling):指同一个双亲的孩子之间互称为兄弟。如上述树中,H、I、J互称为兄弟。
  • 结点的祖先:指从根结点到该结点所经分支上的所有结点。如上述树中,M 的祖先为 A、D、H。
  • 结点的子孙:指以某结点为根的子树中的任一结点都是该结点的子孙。如上述树中,B 的子孙有 E、K、L、F。
  • 结点的层次(Level):从根结点开始,根为第一层,根的孩子为第二层。
  • 堂兄弟:其双亲在同一层的结点互为堂兄弟。如上述树,G、E、F、H、I、J 互为堂兄弟。
  • 树的深度(Depth):树中结点的最大层次称为树的深度,又称为树的高度。上述树 A 的深度为 4。
  • 有序树:若将树中结点的个子树看成从左至右是有次序的(不可互换),则称该树为有序树。否则为无序树。在有序树中,最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子
  • 森林(Forest):指 m (m >= 0)棵互不相交的树的集合。对于树中每一个结点而言,其子树的集合即为森林。
    由此,可以用森林和树相互递归的定义来描述树。即就逻辑结构而言,任何一棵树都是一个二元组 Tree =(root,F),其中 root 是树的根结点,Fm 棵树的森林,F = (T1,T2,…,Tm) ,其中 Ti = (ri,Fi)称做根 root 的第 i 棵子树;当 m != 0 时,树根与其子树存在关系 RF = { <root,ri> | i = 1,2,…,m,m > 0 }。这个定义将有助于得到森林和树与二叉树之间的转换的递归定义。

(3)二叉树的性质

二叉树(Binary Tree)是一种特殊的有序树。特点是,它的每一个结点至多只有两棵子树(即二叉树中不存在度大于 2 的结点);并且,二叉树的子树有左右之分,其次序不能任意颠倒。

  • 性质 1:在二叉树的第 i 层上至多有 2 i − 1 2^{i-1} 2i1 个结点 ( i > = 1 i >= 1 i>=1)。按照至多的考虑,每层都比上一层多二倍,又第一次为 1 = 2 0 2^{0} 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/776113
推荐阅读
相关标签
  

闽ICP备14008679号