与树相关的概念性质
树:n(n>=0)个节点的有限集合,n=0为空树。
在任意一个非空树中,有且只有一个被称之为根节点的节点
n>1时,其余节点可分为m(m>0)个互不相交的有限集合 T1 . …Tm ,其中每一个集合本身又是一棵树,并称之为子树。
A为root节点即为根节点
节点:树是由有限个元素组成的集合,每人元素都称作一个节点
孩子:节点子树的根,相应,该节点称之为孩子的双亲,并且,同一双亲的孩子,互称之为兄弟。
如图所以,A的孩子为 B,C
B ,C的双亲为A,并且,B,C互称为兄弟
节点的度:一个节点含有的子树的个数称为该节点的度,例如图中的A节点度为2
叶子节点:度为0的节点 ,图中的C,D均是
树的度:树中的子树最大的度。图中的树的度为2
节点的深度:从根结点(深度为1)开始自顶向下逐层累加至该结点的深度值。
例如图中的节点D的深度为3。
树的深度:从根结点(深度为1)开始自顶向下逐层累加至叶子节点的深度值。
图中树的深度为3。
树的深度和高度值一样,只不过深度时自上而下,高度自下而上。
森林:多个树的集合。
树的层次: 从根节点算起,根节点为第一层,根节点的孩子为第二层 . . . . . . 下图中的 总共有三层
树的存储
树的存储有很多种方法,但其实大同小异,只是每一种方法都会有优劣之处。
双亲表示法
如图所示
按照DFS 将所有节点进行编号,
一个节点没有父节点,则表示为-1 如 根节点
其余节点的父节点就是其索引号。
这种表示方法缺点在于如果想要知道某个节点的孩子节点,只能遍历这个树结构
当然你也可以设计这样的结构:
孩子表示法
这个是数组和链表组合的方法,可以节省空间