树的基本术语

说明:如果在看博客过程中有对深度,高度和层次有迷惑的,请不要着急,这是因为不同的基数问题。到底是从0开始还是从1开始算,先忽略这个问题,博客下面转载的有详细说明。

树的概念(理解即可):

树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构。没有结点的树称为空(null或empty)树。一棵非空的树包括一个根结点,还(很可能)有多个附加结点,所有结点构成一个多级分层结构。

图1
图1

树的基本知识:

  • 节点深度:对任意节点x,x节点的深度表示为根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推。如图1节点5的深度为0,节点2的深度为1,节点1的深度为2。(深度从上往下看)
  • 节点高度:对任意节点x,叶子节点到x节点的路径长度就是节点x的高度。图1中节点1,3,7的高度为0,节点2,8高度为1,节点5高度为2.(高度从下往上看)
  • 树的深度:一棵树中节点的最大深度就是树的深度,也称为高度。图1的深度为2
  • 父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点.如图1节点5是节点2,8的父节点
  • 子节点:一个节点含有的子树的根节点称为该节点的子节点。如图1节点2,8是节点5的子节点。
  • 节点的层次:从根节点开始,根节点为第0层,根的子节点为第1层,以此类推
  • 兄弟节点:拥有共同父节点的节点互称为兄弟节点。如图1节点2和8是兄弟节点。
  • 度:节点的子树数目就是节点的度。如图1中节点5,2的度为2,节点8的度为1,节点1,3,7的度为0
  • 叶子节点:度为零的节点就是叶子节点.如1图中节点1,3,7
  • 分支结点:度大于0的结点为分支结点,显然除了叶子结点之外的结点都为分支结点。如图1中节点5,2,8
  • 祖先节点:对任意节点x,从根节点到节点x的所有节点都是x的祖先
  • 后代:对任意节点x,从节点x到叶子节点的所有节点都是x的后代
  • 森林:m颗互不相交的树构成的集合就是森林

以下内容转自 https://blog.csdn.net/weixin_41133154/article/details/80027285

https://blog.csdn.net/weixin_41133154/article/details/80027285 转载内容开始

树的基本术语最全面最易懂解释start

树的定义:

①如果树的结点个数为0,则树为空树

②如果树的结点个数为1,则该结点是被称为根结点的结点

③如果树的结点个数大于1,则必存在一个称为根的结点,它的分支下是几个互不相交的有限集合,并且这些互不相交的有限集合本身又是一棵树。

定义注释:从定义③可知,树的定义蛮有趣的,树中有树,树中还是树,所以可知树的定义是一个递归定义,从下图可以看出,如果你仔细分析过带简单循环体的递归程序,那么会知道程序的整个运行路径其实就是一棵树,所以树和递归还是有不浅的联系的。

(1)结点(node)

树的结点由数据元素及其若干分支组成,如下图所示:

 

(2)树和子树(subtree)

以根结点为根的树为全树(或树),以其他结点作为根结点的树为子数

所以当谈到以哪个结点为根结点,就应该知道指的是哪棵子数,以一个结点作为根结点的子数是唯一的。

(3)结点的度(degree of node)

结点的度指的是结点分支的个数,如下图所示:

(4)树的度

选取所有结点中最大的度,就是树的度,如下图所示:

(5)叶子结点(leaf node)

度为0的结点就是叶子结点,它位于树最深层,并且树只要非空,就一定存在叶子结点,如下图所示:

(6)分支结点(internal node)

度大于0的结点为分支结点,显然除了叶子结点之外的结点都为分支结点。

而且根结点也是分支结点。

(7)父节点(father node)和子结点(child node)

一个结点若干分支下的结点都为该结点的子结点(或称孩子(children)),并且,该结点称为子结点的父节点,如下:

(8)兄弟结点(brother)和堂兄弟结点

父节点下的所有子结点互为兄弟结点,如下图,B,C,D结点互为兄弟结点

堂兄弟结点:位于同一层的,并且父节点之间是兄弟结点的结点互为堂兄弟结点,上图中,E,G为堂兄弟结点,F和G也是堂兄弟结点,他们的父节点是兄弟结点。

(9)祖先(ancestor)和子孙(descendant)

这个关系就同父亲和孩子一样。从根结点到该结点路径上的所有结点都为该结点的祖先,如下图所示:

反之,C,G,H就是A的子孙,G和H都为C的子孙,H也可以称为G的子孙,不过因为G和H只隔一代,所以一般称为孩子

所有的结点都有一个公共祖先,就是根结点,但任意两个结点可以不只一个祖先,比如E和F的公共祖先有A和B

(10)路径(path)

从一个结点到另一个结点之间的边和结点构成路径,如下图:

A到H的路径包含A,C,G,H结点和连接这些结点的三条边

(11)子树根结点

如图,A的子树根结点为B,C,D。B的子树根结点为E,F,D没有子树根结点

(12)层次(level)

树是一个递归结构,所以也有层次这种概念,由层次也会引发出树的深度,就好像递归也有深度一样。结点的层次为从结点到根结点的路径中边的条数,并且认为根结点的层次为0,因为根结点到自身的路径中边的条数为0(但也有一些教科书假设根结点的层次为1,这个时候要注意书中相应的说明),如下图所示,B的层次为1,G的层次为2,H的层次为3

结点的层次有时也称为结点的深度(depth)

(13)树的深度

与树的度对应于结点的度一样,树的深度也是选取结点中的最大深度(或最大层次),下图的树的深度为3

树的深度是一个自顶向下的概念,是从根结点出发,向着叶子结点方向前进的,并且深度这个概念一般只用来描述树,当描述结点的深度时,层次更为恰当,但是用深度也无妨。

(14)结点的高度(height of node)

高度与深度不同,高度的描述是自下向顶的,而深度是自顶向下的,同一层次的结点的高度是可以不同的,下面先来介绍高度的概念。

从一个结点出发,一直到它的叶子结点的最大路径中的边的条数,就是该结点的高度,叶子结点的高度认为是0,因为从叶子结点出发,到它本身的路径只有一条,并且边数为0。下图标出了所有结点的高度,可以观察到,同一层次的叶子结点的高度不一定相同,因为它们的叶子结点的最大层次是不同的。

这里,由于A结点到叶子结点的最大路径为A->C->G->H,而不是A->B->E(F)和A->D,所以它的高度是3,因为最大路径的边数为3

(15)树的高度

树的高度就是根结点的高度,如上图所示,该树的高度为3

(16)森林(forest)

森林的概念和树的概念是密切联系的。

森林就是彼此不相交的树的集合,树也可以看成是森林共有一个根结点后的结构,如下图所示:

上图标记出来的就是三棵子树,他们构成一个(子树)森林,如果给这三棵子树共有一个结点,那么就构成一个树

这个树是A,森林是子树B,C,D的集合,可以看出森林和树是两个密切相关的概念。

https://blog.csdn.net/weixin_41133154/article/details/80027285 转载内容结束

以下内容转自 https://blog.csdn.net/qq_36667170/article/details/84142019

https://blog.csdn.net/qq_36667170/article/details/84142019 转载内容结束

的高度和深度

在这里插入图片描述
深度定义是从上往下的,高度定义是从下往上的。(其实不用在意这个,反正树的深度高度怎么数都一样的)。
深度和高度涉及到结点的层数有的教材规定根结点在第0层,有的则规定根结点在第1层。原理都是一样的,因教材而异。
树从根结点开始往下数,叶子结点所在的最大层数称为 树的深度
有的教材对于树的高度定义是高度就是深度(层数是0123,深度=高度=3;层数是1234,深度=高度=4);而有的教材树的高度则是看一共有几层。也就是说不论根节点在第几层,树的深度都是和最大层的叶子节点一样。而树的高度只要看有几层就行了(0123是四层,1234也是四层)。

总之在我看来:

有两种说法:

  1. 高度就是深度
  2. 看层数:
    如果根结点第0,层数=深度=高度-1
    如果根结点第1,层数=深度=高度

举个栗子_(:3 」∠ )_:

在这里插入图片描述  0

层数从第0层开始从第1层开始
最大层数45
深度45
高度(高度=深度)45
高度(数层数)55

补充:

根节点在第0层时候,按照北大数据结构视频的说法就是高度数结点数,深度数路径。从A到G,节点是5层,中间有4段路径,所以深度4,高度5。
其实也可以理解为数高度时候叶子结点从1开始数。因此空数高度0,只有一个根节点高度1。

但是在清华大学 邓俊辉数据结构书中如下:
在这里插入图片描述
这本书中可以看出数高度时候叶子结点是从0开始的,因此空数高度-1,只有一个根节点高度0。



结点的高度和深度

在这里插入图片描述
结点的深度也是从根结点开始数,是第几层也决定于根结点在第0层还是第1层。根结点的高度则取决于它的子树,该节点子树中最远的那个叶子结点作为1开始数。

例如对于BCD三个点:

B的子树是C和D,数B的高度时候,B的子树中离B最远的叶子节点是G,所以G高度为1,B高度4D高度3。但是C是叶子节点,C没有真子树,C高度就是1

在这里插入图片描述  0

BCD高度(叶子节点>=0)4 1 34 1 3
BCD高度(叶子节点>0)3 0 23 0 2
BCD深度1 2 22 3 3

https://blog.csdn.net/qq_36667170/article/details/84142019 转载内容结束

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值