四、树与二叉树
一、树是一个递归定义。当n=0时 称T为空树。逻辑上属于非线性结构(层次结构)
基本名词术语
1.结点的度:该结点拥有的子树的数目。
2. 树的度:树中结点度的最大值。
3.叶结点:度为0 的结点。(终端结点)
4.分支结点: 度非0 的结点。(非终端结点)
5. 树的层次: 根结点为第一层,若某结点在第i 层,则其孩子结点(若存在)为第i+1层。
6. 树的深度: 树中结点所处的最大层次数。(高度)
7. 树的有序性: 若树中结点的子树的相对位置不能随意改变,则称该树为有序树,否则称树为无序树。
二、
1. 满二叉树:
若一棵二叉树中的结点,或者为叶结点,或者具有两棵非空子树,并且叶结点都集中在二叉树的最下面一层,这样的二叉树为满二叉树。
2. 完全二叉树
若一棵二叉树中只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层从左至右的位置上.这样的二叉树为完全二叉树。
3、二叉树的性质
1、具有N个结点的非空二叉树有且仅有N-1个分支。
2、非空二叉树的第i层最多有个结点。
3、深度为h的非空二叉树最多有-1个结点。
4、在任意非空二叉树中,若叶节点的数目为n0,度为2的结点数目为n2,则有关系n0=n2+1成立。
5、具有n个结点的完全二叉树的深度h=[log2n]+1;
6、完全二叉树的编号。
4、二叉树的五种基本形态
【思考】:1 度为2的树是二叉树?
2 度为2的有序树是二叉树?
3 具有三个结点的树可以有几种形态?
【补充】二叉树与树和森林之间的转换。
三、二叉树的存储结构
1、二叉树的顺序存储结构(根据完全二叉树的性质6)
结论:顺序存储结构比较适合满二叉树,或者接近于满二叉树的完全二叉树,对于一些称为“退化二叉树”的二叉树,顺序存储结构的空间开销浪费的缺点表现比较突出。
2、二叉树的链式存储结构
typedef struct node
{
datatypedata;
structnode *lchild, *rchild;
}BTNode, *BTREE;
四、二叉树的遍历
前序遍历DLR、中序遍历LDR、后序遍历LRD、层次遍历。
五、二叉排序树
二叉排序树或者为空二叉树, 或者为具有以下性质的二叉树:
若根结点的左子树不空, 则左子树上所有结点的值都小于根结点的值;
若根结点的右子树不空, 则右子树上所有结点的值都大于或等于根结点的值;
递归定义:每一棵子树分别也是二叉排序树。
建立(插入)、查找算法。
平均查找长度ASL —— 确定一个元素在树中位置所需要进行的元素间的比较次数的期望值(平均值)。