在非线性数据结构中,树是其中很重要的一部分。相较于链表,队列,栈,串等数据结构,树的基本操作相对较为复杂,同时也更加难以理解。
树是具有n个结点的有限集,同时也具有多个重要的名词需要掌握,在了解树的相关名词后,需要掌握最简单的一种名为“二叉树”的树形结构,掌握二叉树的结构以及基本操作后,必须了解其他类型的树与森林的相互转化。
先行了解关于树的几个名词:
(1)树的结点
在树的图形表示中,结点包含一个数据元素以及其他若干指向其子集合的分支
(2)根
在任意一棵非空树中,根节点是这个非空树中其他结点的唯一的结构发起点,结点之间按层次互相连接。按照层次一直向上寻找,一直到达所有结点的发起结点。这个结点称作这棵非空树的根结点。
(3)子树
由根结点发出的,延伸向下的树的子集称作这棵树的子树(具有直线与其他结点相连),与概念(2)一同值得注意的是,只要存在一个结点可以向下延伸出子集,这个结点便可以称作这棵子树的根节点。
(4)度
某个节点拥有的子树数目(向下与其他结点连接的直线数目)
(5)叶子/终端结点
度为0的结点(不具有子树的结点)
(6)孩子与双亲
结点的子树的根(与结点直接相连的结点)称作该结点的孩子结点。同样地,该结点称作其孩子结点的双亲结点
(7)兄弟
具有同一个双亲结点的结点互相称作兄弟结点
(8)层
由根结点开始定义,根结点定义为第1层,根结点的孩子结点定义为第2层。由于根结点到任意结点的路径是唯一的,假设根结点到某一结点经过的结点数目为l,则该结点所处的层数为l+1。双亲在同一层的结点互相称作堂兄弟结点。
(9)树的深度
树中结点的最大层数称作树的深度。
结合以下图片,根据概念得出多项结论:
(1)这棵树的结点以A~L进行表示
(2)这棵树的根结点为A,结点B,D,E,F,K是子树的根结点
(3)树B,C,D为树A的子树,树E,F为树B的子树
(4)以ABCD结点为例,A结点的度为3,B结点的度为2,C结点的度为0,D结点的度为3
(5)这棵树的叶子结点为C,J,L,G,H,I
(6)以ABCD结点为例,BCD结点为A的孩子结点,A为BCD结点的父节点
(7)EF互为兄弟结点,GHI互为兄弟结点
(8)以根结点所在的深度记为第1层,BCD结点的层数为2,EFGHI的层数为3,JK的层数为4,L的层数为5
(9)L的层数是树之中最大的,记作5,同时也是树的深度