二叉树

1.二叉树binary tree是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的,分别称为根结点的做子树和右子树的二叉树组成

2.二叉树的特点:

    每个结点最多有两棵子树,所以不存在度大于2的结点。没有子树或者只有一棵子树都是可以的

    左子树和右子树是有顺序的,次序不能随便颠倒

     即使树中某结点只有一棵子树,还是要区分是左子树还是右子树

3.二叉树有5种基本形态

   空二叉树

   只有一个根结点

   根结点只有左子树

   根结点只有右子树

    根结点既有左子树也有右子树

4.特殊二叉树

   斜树

  所有的结点只有左子树称为左斜树,所有的结点只有右子树称为右斜树

   满二叉树

   在一棵二叉树中,如果所有的分支结点都存在于左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树

   完全二叉树

   对于一棵具有n个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树

   叶子结点只能出现在最下两层

   最下层的叶子一定集中在左部连续的位置

   倒数第二层,若有叶子结点,一定在右部连续位置

    如果结点的度为1,则该结点只有做孩子,即不存在只有右子树的情况

   同样结点数的二叉树,完全二叉树的深度最小

 5.二叉树的性质

    在二叉树的第i层上至多有pow(2,i-1)个结点

    深度为k的二叉树至多有pow(2,k)-1个结点

    对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1

    具有n个结点的完全二叉树的深度为log2n +1

    如果对一棵有n个结点的完全二叉树(深度为log2n +1)的结点按层序编号,对于任一结点i有:

         1) i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是i/2

         2)如果2i>n,则结点为叶子结点;否则其左孩子是结点2i

         3) 如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1

你可能感兴趣的:(数据结构,C++)