二叉树定义:

    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.

 二叉树的存储结构

顺序存储:数组下标为对应的完全二叉树的层序编号

 

 

链式存储:二叉链表,一个数据域,两个指针域分别指向左右孩子

 

  1. typedef struct BiTNode{ 
  2.     ElemType data; 
  3.     struct BiTNode *lchild; 
  4.     struct BitNode *rchild; 
  5. }BitNode,*BiTree