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