树是数据结构中的一种,其属于非线性数据结构结构的一种,我们前文所提到的数据结构多数都是线性的,这也是较为简单的数据结构,而接下来的树与图均属于非线性数据结构,也是概念极多的一类。
树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构。没有结点的树称为空(null或empty)树。一棵非空的树包括一个根结点,还(很可能)有多个附加结点,所有结点构成一个多级分层结构。
树的定义:n个节点组成的有限集合。n=0,空树;n>0,1个根节点,m个互不相交的有限集,每个子集为根的子树。
如图所示,图为一颗树:
l 节点的度:树中某个节点的子树的个数。
l 树的度:树中各节点的度的最大值。
l 分支节点:度不为零的节点。
l 叶子节点:度为零的节点。
l 路径:i->j;路径长度:路径经过节点数目减1。
l 孩子节点:某节点的后继节点;双亲节点:该节点为其孩子节点的双亲节点(父母节点);兄弟节点:同一双亲的孩子节点;子孙节点:某节点所有子树中的节点;祖先节点:从树节点到该节点的路径上的节点。
l 节点的层次:根节点为第一层(以此类推);树的高度:树中节点的最大层次。
l 有序树:树中节点子树按次序从左向右安排,次序不能改变;无序树:与之相反
l 森林:互不相交的树的集合。
l 树的节点树为所有节点度数加1(加根节点)。
l 度为m的树中第i层最多有m^(i-1)个节点。
l 高度为h的m次树至多(m^h-1)/(m-1)个节点。
l 具有n个节点的m次树的最小高度为logm( n(m-1) + 1 ) 向上取整。
请利用树的基本术语求出图示中的参数内容,如这颗树结点的度,树的度等,也请自己额外找一些图片求这些术语表示的内容,这对熟悉树的基本概念十分有帮助。
本文固定URL:https://www.dotcpp.com/course/134