节点,枝,根,叶,度,层/深度/高度,双亲/孩子/兄弟,祖先/后代,森林

举报
嵌入式与Linux那些事 发表于 2022/03/29 01:18:23 2022/03/29
【摘要】 建立了图(graph)的认识,“树”就好理解了。“树”是一种很特别的图(graph)。用图来定义“树”:任意2点之间都连通,并且没有“环”的图。下面的图就是一颗树,因此,树是图的特例。 &nbs...

建立了图(graph)的认识,“树”就好理解了。“树”是一种很特别的图(graph)。用图来定义“树”:任意2点之间都连通,并且没有“环”的图。下面的图就是一颗树,因此,树是图的特例。 
这里写图片描述 
当然,由于树是一种特别有用的数据结构,因此,它有着一些自身的特点和概念: 
一、节点(node) 
就是图(graph)的顶点(vertex)。如上图中的顶点:0,1,2,3,4,5,6,7,8。 
二、枝(branch) 
就是图(graph)的边(edge)。如上图中的0->1, 0->3, 0->5, 1->2, 1->4, 3->6, 5->8, 8->7。 
三、根(root) 
一颗树可以想象成从某一个顶点开始进行分枝,那么这个顶点就是“根”。一颗树的每一个节点都可以作为根。如图中可以将节点0作为根。 
这里写图片描述 
四、叶(leaf) 
在一颗树上选定根后,如节点0作为根。由根开始不断分枝,途中所有无法再分枝的节点成为叶。如下图中,根为点0,则节点2,4,6,7是叶。 
这里写图片描述 
五、度(degree) 
一个节点拥有的子树数称为节点的度(degree)。下图中,根节点0有3个子树,度为3;节点1有2个子树,度为2;节点3,5分别只有一个子树,度为1。叶(leaf)也可以用度来定义:度为0的节点称为叶(leaf)。节点2,4,6,7没有子树,度为0,所以2,4,5,7为叶。 
这里写图片描述 
六、层/深度/高度(level/depth/height) 
在一颗树中选定根(root)后,按照每个点离根的距离,可以将树中的点分为多个层级。 
这里写图片描述 
而一个树的最大层级数称为树的深度(depth)或高度(height),如该树的深度(高度)为4。一个节点到下方的叶的最大层级数之差称为节点的高度(height),如节点1位于层1,下方的叶子2,4位于层2,所以节点1的高度是1;同理,节点3的高度也是1,节点5的高度是2,节点2本身是叶,其高度是0,根节点0的高度是3。 
七、双亲/孩子/兄弟(parent/child/sibling) 
在一颗树中选定根(root)后,相邻的两点,靠近根的是双亲(parent),远一点的是孩子(child)。 
这里写图片描述 
如上图中,0是1的双亲(parent),2,4是1的孩子(child)。2,4有共同的双亲,因此2,4之间互称为兄弟(sibling)。 
同样的,3是6的双亲,6是3的孩子;5是8的双亲,8是5的孩子。1,3,5是0的孩子,1,3,5互称为兄弟。 
八、祖先/后代(ancestor/descendant) 
在一颗树中选定根(root)后,一个点的双亲、双亲的双亲、……都是此点的祖先(ancestor),根节点是所有子节点的祖先,注意双亲(parent)也属于祖先。因此,祖先是一个集合概念。同理,一个点的孩子、孩子的孩子、……都是此点的后代(descendant),后代也是一个集合概念。 
九、森林(forest) 
很多颗树的集合称为森林。森林中,树与树之间互不相交。 
这里写图片描述 
此外,与图一样,树也有“有向/无向”,“同构”,“权重”,“路径”等概念,含义与图类似,不再赘述。 
最后总结下: 
1.树中所有点都是连通的; 
2.树中任意2点之间只有唯一一条路径; 
3.树是无环的连通图; 
4.森林是无环的非连通图。

文章来源: blog.csdn.net,作者:嵌入式与Linux那些事,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_16933601/article/details/103325341

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。