数据结构笔记之树与二叉树

来源:互联网 发布:炉石毕游侠知乎 编辑:程序博客网 时间:2024/06/02 07:29

四、树与二叉树

 

一、树是一个递归定义。当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、在任意非空二叉树中,若叶节点的数目为n­­0,度为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 —— 确定一个元素在树中位置所需要进行的元素间的比较次数的期望值(平均值)。