树
树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足:
- 有且仅有一个特定的称为根的结点。
- 当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树。
概念
树的高、深度vs结点的高、深度
高度:从下到上 | 深度:从上到下 |
---|---|
根节点为第0层:高度:数结点数,深度:数路径 | 树从根结点开始往下数,叶子结点所在的最大层数 |
树:高度等于深度(根节点为第一层) | 结点高度不一定等于深度(叶子结点编号是0还是1) |
树的高度和深度 | 结点的高度和深度_树的高度从0开始还是1_Ann's Blog的博客-CSDN博客
祖先:考虑结点K。根A到结点K的唯一路径上的任意结点,称为结点K的祖先。如结点B是结点K的祖先,而结点K是结点B的子孙。
双亲&孩子:路径上最接近结点K的结点E称为K的双亲,而K为结点E的孩子。
兄弟:有相同双亲的结点称为兄弟,如结点K和结点L有相同的双亲E,即K和L为兄弟。
堂兄弟:双亲在同一层的结点互为堂兄弟,图中结点G与E,F,H,I,J互为堂兄弟。
度:树中一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度。如结点B的度为2,结点D的度为3,树的度为3。
分支结点:度大于0的结点称为分支结点(又称非终端结点);
叶子结点:度为0(没有子女结点)的结点称为叶子结点(又称终端结点)。
有序树和无序树。树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树。
路径和路径长度。树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
注意:由于树中的分支是有向的,即从双亲指向孩子,所以树中的路径是从上向下的,同一双亲的两个孩子之间不存在路径。
森林。森林是m (m≥0)棵互不相交的树的集合。森林的概念与树的概念十分相近,因为只要把树的根结点删去就成了森林。反之,只要给m棵独立的树加上一个结点,并把这m棵树作为该结点的子树,则森林就变成了树。