Concept
Graph is not image or map. Usually, we see graph as abstract network that consists of vertex and edge.
Tree
用图来定义树:任意两点之间都连通,并且没有“环”的图。树是图的特例。
下面的图就是树。
下面介绍一些关于树的基本概念。
-
节点 (node)
就是vertex,比如上图中的0,1,2,3,4,5,6,7,8。 -
枝 (branch)
就是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为叶。
-
层/深度/高度 (level/depth/height)
在一棵树选定root后,按照每个点离根的距离,可以将树中的点分为多个层级。
而一个树的最大层级数称为树的深度(depth)或高度(height),如该树的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互称为兄弟。
-
ancester/descendant
在一颗树中选定根(root)后,一个点的双亲、双亲的双亲、……都是此点的祖先(ancestor),根节点是所有子节点的祖先,注意双亲(parent)也属于祖先。因此,祖先是一个集合概念。同理,一个点的孩子、孩子的孩子、……都是此点的后代(descendant),后代也是一个集合概念。 -
森林 (forest)
很多棵树的集合称为森林。森林中,树与树不相交。
此外,与图一样,树也有“有向/无向”,“同构”,“权重”,“路径”等概念,含义与图类似,不再赘述。
Conclusion:
- 树中的所有点都是连通的;
- 树中任意2点只有唯一一条路径;
- 树是无环的连通图;
- 森林是无环的非连通图。
Reference:
https://blog.csdn.net/saltriver/article/details/54428685
https://blog.csdn.net/saltriver/article/details/54428750