二叉树( Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树T:
二叉树与树一样具有递归性质,二叉树与树的区别主主要有以下两点:
二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有5种基本形态,如下图所示。
注:有关树的术语是都适用于二叉树。
二叉树具有以下重要特性:
性质1 在二叉树的第i层上至多有2^(i-1)个结点(i≥1)。
性质2 深度为k的二叉树至多有(2^k)-1个结点(k≥1)。
性质3 对任何一棵二叉树T,如果其终端节点数为n0,度为2的结点数为n2,则n0=n2+1;结点总数为n=n0+n1+n2。
再看二叉树中的分支数。除根结点外,其余一个结点都有一个分支进入,设B为分支总数,则n=B+1。由于这些分支是由度为1或2的结点射出的,所以又有B=n1+2·n2。于是得n=n1+2·n2+1。
满二叉树和完全二叉树
满二叉树:深度为k且含有(2^k)-1个结点的二叉树。
完全二叉树:深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。
完全二叉树的特点是:
性质4 具有n个结点的完全二叉树的深度为log(2)(n)(向下取整)+1
性质5 如果对一棵有n个结点的完全二叉树(其深度为log(2)(n)(向下取整)+1)的结点按层序编号(从第1层到第log(2)(n)(向下取整)+1层,每层从左到右),则对任一结点i(1≤i≤n),有: