树的定义和基本术语

树型结构是一类重要的非线性数据结构。其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构可用树来形象表示。

1.树的定义和基本术语

树(Tree 是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊地位,这个结点称为该树的根结点,或简称树根。

定义

我们可以形式地给出树的递归定义如下:

树是n(n>=0)个结点的有限集。它

(1)或者是一棵空树(n=0),空树中不包含任何结点

(2)或者是一棵非空树(n>0),此时有且仅有一个特定的称为 根(root) 的结点;当n>1时,其余结点可以分为m(m>0)个互不相交的有限集T1,T1,…,Tm,其中每一个本身又是一棵树,并且称为根的 子树(sub tree)

如下图示,(a)是一棵空树,(b)是只有一个根结点的数,(c)是一棵有10个结点的树,其中A是根,其余的结点分为3个不相交的集合:T1={B,E,F}、T2={C,G}、T3={D,H,I,J},每个集合都构成一棵树,且都是根A的子树。

这里写图片描述

结点的层次和树的深度

树的结点包含一个数据元素及若干指向其子树的若干分支。结点的 层次(level) 从根开始定义,层次数为1的结点时根结点,其子树的根的层次数为2。若某结点在第l层,则其子树的根就在第l+1层。对于层次为k(k>1)的每个结点c,都有且只有一个层次为k-1的结点p与之对应,p称为c的 双亲(parent) 或父亲、父结点。若p为c的父亲,则c称为p的 孩子(child) 。父子之间的连线是树的一条边。在树中根结点没有父亲,其余结点只有一个父结点,但是却可能有多个孩子,同一个结点的孩子相互称为 兄弟(sibling)

树中结点的最大层次数称为树的 深度(Depth) 或高度。树中结点也有高度,其高度是以该结点为根的树的高度。

例如,上图(c)中,结点A在第1层,结点B、C、D在第2层,结点E、F、G、H、I、J在第3层。结点A是结点B、C、D的父亲,结点B、C、D是结点A的孩子。由于结点H、I、J有同一个父亲D,所以它们互为兄弟。

以A为根的树的高度为3,结点A的高度也就为3。

结点的度与树的度

结点拥有的子树的数目称为结点的 度(Degree) 。度为0的结点称为 叶子(leaf) 或终端结点。度不为0的结点称为 非终端结点分支结点 。除根之外的分支结点也称为内部结点。在这里需要主要的是,结点的直接前驱结点,即它的父结点不计入其度数

例如,在上图(c)中,结点A和D的度数为3,结点E、F、G、H、I、J的度数均为0,它们是叶子结点。

在树结构中,有一个重要的性质如下:

性质1: 树中的结点树等于树的边树加1,也等于所有结点的度数之和加1。

这是因为除根结点之外的每个结点都与指向它的一条边对应,所以除根结点以外的结点树等于树中边树之和。因此树中的结点数等于树的边树加1.而边数之和就是所有结点的度数之和,因此树中的结点数也等于所有结点的度数之和加1。

路径

在树中k+1个结点通过k条边连接构成的序列{

祖先、子孙、堂兄弟

将父子关系进行扩展,就可以得到祖先、子孙、堂兄弟等关系。结点的 祖先 是从根到该结点路径上的所有结点。以某结点为根的树中的任一结点都称为该结点的 子孙 。父亲在同一层次的结点互为 堂兄弟

例如,图(c)中,结点H的祖先为结点A、D。结点B的子孙有结点E、F。结点E、F与结点E、H、I、J互为堂兄弟。

有序树、m叉树

如果将树中结点的各子树看成是从左至右是有次序的,则称该树为 有序树 ;若不考虑子树的顺序则称为 无序树 。对于有序树,我们可以明确地定义每个结点的第一个孩子、第二个孩子等,直到最后一个孩子。若不特别指明,一般讨论的树都是有序树。

树中所有结点最大度数为m的有序树称为 m叉树。例如,在上图(c)中,以结点A为根的树就是一棵3叉树。

森林

森林(forest) 是m(m>=0)棵互不相交的树的集合。对树中的每个结点而言,其子树的集合即为森林。树和森林的概念相近。删去一棵树的根,就得到一个森林;反之,加上一个结点作为树根,森林就变成了一棵树。

例如,在上图(c)中,结点A的所有子树可以组成一个森林。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值