性质1:在二叉树的第i层上至多有2i-1个结点(i≥1),至少有1个结点
    性质2:深度为K的二叉树至多有2k-1个结点(k≥1),至少有k个结点
    性质3:对任何一棵二叉树T,如果其叶子树为n0,度为2的结点数为n2,则n0=n2+1(结点数=度为2的分支数+1)
    两种特殊形式的二叉树:
    (1)满二叉树:一棵深度为k且有2k-1个结点的二叉树称为满二叉树
    特点:1)每一层上的结点数都是最大结点数(即每层都满)
    2)叶子结点全部在最底层
    对满二叉树结点位置进行编号
    编号规则:从根结点开始,自上而下,自左而右
    每一结点位置都有元素
    满二叉树在同样深度的二叉树中结点个数最多,在同样深度的二叉树中叶子结点个数最多
    (2)完全二叉树:深度为k的具有n个结点的二叉树,当且仅当其每一个结点都有深度为k的满二叉树中编号为1~n的结点一一对应时,称之为完全二叉树
    注:在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即是一棵完全二叉树
    特点:1)叶子只可能分布在层次最大的两层上
    2)对任一结点,如果其右子树的最大层次为i,则其左子树的最大层次必为i或i+1
    性质4:具有n个结点的完全二叉树的深度为[log2n]+1
    性质5(表明完全二叉树中双亲结点编号与孩子结点编号之间的关系):如果对一棵有n个结点的完全二叉树(深度为[log2n]+1)的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i(1≤i≤n),有:
    (1)如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点[i/2]
    (2)如果2i>n,则结点i为叶子结点,无左孩子;否则,其左孩子是结点2i
    (3)如果2i+1>n,则结点i无右孩子;否则,其右孩子是结点2i+1
    二叉树的存储结构
    (1)顺序存储结构:
    实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素
    // 二叉树顺序存储表示
    #define MAXTSIZE 100
    Typedef TElemType SqBiTree[MAXTSIZE]
    SqBiTree bt;
    二叉树的顺序存储缺点:结点间关系蕴含在其存储位置中,浪费空间,适于存满二叉树和完全二叉树
    (2)链式存储结构
    二叉链表存储结构:
    typedef struct BiNode{
    TElemType data;
    struct BiNode lchild, rchild;//左右孩子指针
    }BiNode,BiTree;
    三叉链表:
    typedef struct TriTNode{
    TElemType data;
    struct TriTNode
    lchild, parent,rchild;//左右孩子指针
    }TriTNode,*TriTree;