树是n个结点的有限集合,n=0时,称为空树。在任意空树中应满足:
1.有且仅有一个特定的称为根的结点
2.当n>1时,其余结点可分为m个互不相交的有
限集合,其中每个集合本身又是一棵树,并且成为根节点的子树。
树的定义是递归的,也是一种递归的数据结构。有两个特点:
1.树的根节点没有前驱结点Q,除根节点外的所有
结点有且只有一个前驱结点
2.树中所有结点可以有零的或多个后继结点Q
树适合表示具有层次结构的数据。数中的某个结点最多只和上一层的一个结点有直接关系,根结点没有直接上层结点,所有在n个结点的书中有n-1条
边。
基本术语
这里要注意的主要是:
1)祖先结点对应子孙结点:双亲结点对应孩子结点:具有相同双亲的结点称为兄弟结点。
2)树中一个结点的子结点个数称为结点的度;树中结点的最大度数称为树的度。
3)度大于0的称为分支结点:度为0的结点称为叶子结点;
4)结点的深度、高度和层次
结点的层次:从根结点开始定义的,根结点第一层,一直往下推
结点的深度:从根结点开始自顶向下逐层相加
结点的高度:从叶结点开始自底向上逐层相加
树的高度:树中结点的最大层数
5)有序树,无序树Q
有序树:树中结点的子树从左到右是有次序的,不能交换
6)路径和路径长度
树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。兄弟结点之间不存在路径。
7)森林:森林是由m棵互不相交的集合。
树的性质
1、树中的结点数等于所有结点的度数加1
2、度为m的树中第i层上至多有mi-1结点
3、高度为h的m叉树至多有(mh-1)/(m-1)个结点
4、具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]
二叉树定义
二叉树的特点就是每个节点至多只有两颗子树,并且二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树与度为2的有序树的区别:
1)度为2的树至少有三个结点,而二叉树可以为空
2)度为2的有序树的孩子结点左右次序是相对的。但是二叉树的结点次序是确定的。
特殊的二叉树
1、满二叉树Q:一棵树高度为h,且含有2h-1个结点的二叉树称为满二叉树。就是说满二叉树中的所有结点(除叶子结点)都含有两个子结点,也就是度为2。若对满二叉树从根结点编号,自上而下,自左向右,那么对于编号为i的结点,若有双亲,则其双亲为i/2(向下取整),若有左孩子,则左孩子为2i,若有右孩子,则右孩子为2i+1。
2、完全二叉树Q:设一个高度为h,有n个结点的二叉树,当且仅当每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。