这是我参与更文挑战的第15天,活动详情查看:更文挑战
树与二叉树
树
- 树中一个结点的子结点个数成为该结点的度。树中结点的最大度数称为树的度
- 结点的层次从树根开始定义,根节点称为第一层
- 结点的高度从叶结点自底向上逐层叠加
- 结点的深度从根结点自顶向下逐层累加
- 树的高度是树的结点的最大层数
- 路径:两个结点之间所经过的结点序列构成
- 路径长度:路径上的边数
性质
- 树的结点数等于所有结点的度数+1
- 度为m的树中第i层上至多有
- 高度为h的m叉树至多有个结点
- 具有n个结点的m叉树的最小高度为
二叉树
二叉树与度为2的结点的区别
- 度为2的树至少有3个结点,而二叉树可以为空
- 二叉树必须确定左右次序
几个特殊的二叉树
满二叉树
一颗高度为h,且含有
若某结点编号为i ,则
完全二叉树
一个高度为h,有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树的编号为1~n的结点一一对应的时候
- 若
- 叶子结点只可能在层次最大的两层出现,对最大层次中的叶子结点,都依次排列在该层最左边的位置上
- 若有度为1的结点,则只可能有一个,且该结点只有左孩子而无右孩子(重要特征)
- 按层序编号后,一但某结点i只有左孩子或为叶子结点则编号大于i的均为叶子结点
二叉排序树
- 左子树小于根节点右子树大于根节点
平衡二叉树
左子树和右子树深度之差不超过1
二叉树的性质
-
非空二叉树的叶子结点数等于度为2的结点数加1 即
-
非空二叉树上第k层上至多有个结点
-
高度为h的二叉树至多有个结点
-
对完全二叉树按从上到下,从左到右的顺序依次编号1,2,,,n,则有一下关系:结点所在层次(深度)为
-
具有n个(n>0)结点的完全二叉树高度为
二叉树的存储结构
顺序存储
即将二叉树编号为i的结点存储在某个数组下标i-1的分量中,通过一些方法确定结点在逻辑上的父子和兄弟关系
但需要注意数组的第一个结点下标应为1
链式存储
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;