树(Tree)是一种由节点和边组成的层次结构。节点就是树枝与树枝的交叉点,边就是一条条的树枝。
树的边表示节点与节点之的一种特殊关系:生育关系。
树枝和树枝的生育关系看起来不是那么直观,所以,换一种方式,把树看成是一个家谱更容易理解。
树从树根开始繁衍,家族从老祖宗开始繁衍,这就是树的根节点。
树的基本性质:每个节点可以有零个或多个子节点,但除了根节点外每个节点只有一个父节点。
自然界中树也一样,只有一个树根,分出很多茎叶。一条树枝可以长出n条树枝,每个树枝都长在其他树枝或树根上,且只能长在一根树枝上。
家谱也如此,从老祖宗一代代向下繁衍,有“父节点”、“子节点”。一个父亲可以有多个儿子,一个儿子只能有一个父亲。
根据树的这种基本性质,我们可以推出一个结论:树的各个分支是互不交叉的。如下图的T1、T2、T3是三个没有交集的分支。
这就像一颗树,从任一树枝处剪断,都能单独扯出一簇枝丫来,而不会粘连到其他的枝叶。这也像一个人,如果你和父亲断绝了父子关系,你也就再没有父亲。
简单介绍一下树的相关概念:
1.根节点:根节点(Root Node)就是树的根,就是老祖宗,它是树中唯一没有父节点的节点。
2.父节点与子节点:父节点就是爸爸,子节点就是儿子。它有一条有点儿绕但其实纯乎天然没有必要去记的性质:除了根节点外,树中的每个节点都有一个父节点。一个节点可以有零个或多个子节点。前一条可以理解为“每个儿子都有爸爸”(还有且只有一个爸爸,老祖宗除外),后一条可理解为:“你可以生也可以不生”。
3.节点的度:一个节点的子节点数称为该节点的度(Degree),所以度说的就是爸爸生了几个儿子。树的度是指树中所有节点的度的最大值。
4.叶子节点(Leaf Nodes):度为0的节点称为叶子节点,即没有子节点的节点。就是不生的爸爸,在我们东北那边称为“绝户棒子”。
5.分支节点(Internal Nodes 或 Non-Leaf Nodes):非叶子节点称为分支节点,即有一个或多个子节点的节点。
6.层次(Level):从根节点开始,根节点一般为第1层(也可能是0层),根节点的子节点为第2层,依此类推,每个节点的层次是其父节点的层次加1。层次就相当于家族中的辈份。
7.树的高度(Height):树中节点的最大层次称为树的高度。
8.森林:零个或多个互不相交的树组成的集合称为森林。