二叉树定义:
n个结点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
满二叉树
所有分支结点(非叶子结点)都有左子树和右子树,并且所有叶子都在同一层上,这样的二叉树成为满二叉树。叶子只出现在最下一层;非叶子结点的度一定是2;同样深度的二叉树中,满二叉树的结点数和叶子数最多。
完全二叉树
按照层序编号,所有结点的编号都与满二叉树对应的二叉树。叶子结点只能出现在最后两层,最下层作连续,次下层右连续
二叉树的性质
1.在二叉树的第i层上最多有(2的i-1次方)个结点。(数学归纳法)
2.在深度为k的二叉树中,最多有(2的k次方-1)个结点。(等比数列求和)
3.度为2的结点数n2与度为0的结点数n0有如下关系:n0 = n2 + 1(结点数与连接线数的关系)
4.n个结点的完全二叉树的深度为(log2为底n的向下取整+1)(性质2+不等式)
5.
二叉树的存储结构
顺序存储:数组下标为对应的完全二叉树的层序编号
链式存储:二叉链表,一个数据域,两个指针域分别指向左右孩子
- typedef struct BiTNode{
- ElemType data;
- struct BiTNode *lchild;
- struct BitNode *rchild;
- }BitNode,*BiTree