在二叉树这节里面首先我们需要知道树的定义:
树是由n(n>=0)个结点组成的有限集合。如果n等于0,称为空树;如果n大于0,则:
- 有一个特定的称为根的结点,它只有直接后继,但没有直接前驱;
- 除根以外的其它结点划分为m(m>=0)个互不相交的有限集合,每个集合又是一棵树,并且称之为根的子树,每棵子树的根节点有且仅有一个直接前驱,但可以有0个或多个直接后继。
下面我们通过这幅图来介绍树里面的几个概念:
- 节点的度:一个节点含有的子树的个数称为该节点的度。比如说A节点的度为2,C节点的度为3,G节点的度为1。
- 树的度:一棵树中最大的节点的度称为树的度。上图这颗树最大节点的度为3,因此这棵树的度为3.
- 叶节点或终端节点:度为0的节点。上图中E、F、H、I、J、K都为叶节点(终端节点)。
- 非终端节点或分支节点:度不为0的节点。
- 父亲节点或父节点:若一个节点含有子节点,则称这个节点为其子节点的父节点。比如:G是K的父节点,A是B和C的父节点。
- 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点。
- 兄弟节点:具有相同父节点的子节点互称为兄弟节点。
- 堂兄弟节点:父节点在同一层的的节点称为堂兄弟。B、C为一层,D、E、F、G、H为一层。
- 森林:由m(m>=0)颗互不相交的树组成森林。
知道了这些基本的概念以后,我们来看看二叉树的定义:
一颗二叉树是节点的一个有限集合,该集合或者为空,或者是由一个根节点加上两颗分别称为左子树和右子树的、互不相交的二叉树组成。
二叉树有以下性质:
满二叉树:每一层的节点数均达到最大值,则这颗二叉树称为满二叉树。如下图就是一颗满二叉树:
完全二叉树:若设二叉树的高度为h,共有h+1层,除第(h+1)层外,其余(0-h)层的节点树都达到最大个数,第(h+1)层从右向左连续缺若干节点,就是一个完全二叉树。如下就是一个完全二叉树:
完全二叉树的节点和高度有下面这样一个关系:
若一颗树的左子树和右子树都是满二叉树,那么这颗树不一定是一颗满二叉树。就像上面那颗完全二叉树,虽然它的左子树和右子树都是满二叉树,但这颗树确是一个完全二叉树。
同样的,一棵树的左子树和右子树都是完全二叉树,但这棵树不一定是完全二叉树。
如下图所示:
接着我们看一下二叉树的顺序表示和链式表示形式:
顺序表示:
链式表示:
二叉树的逻辑结构和物理结构表示如下:
本篇内容主要说了树,二叉树,完全二叉树,满二叉树的一些相关性质和概念等,在下一篇博客中我们将对二叉树的结构进行设计。更详细的内容见下一篇。^^__^^