5.3.1 二叉树的定义
二叉树(Binary Tree)是 n(n >= 0)个结点的有限集,该集合或者是空集(n = 0),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
二叉树的特点:
1、每个结点最多有俩孩子,因为二叉树中不存在度大于2的结点;
2、子树有左右之分,其次序不能颠倒;
3、二叉树可以是空集合,根可以有空的左子树或空的右子树。
二叉树的五种基本形态:
1、空二叉树;
2、只有一个根结点;
3、根结点只有左子树;
4、根结点只有右子树;
5、根结点既有左子树又有右子树。
具有三个结点的二叉树可能有5不同形态:
二叉树不是树的特殊情况,它们是两个不同的概念。
二叉树结点的子树要区分左子树和右子树,即使只有一棵树也要进行区分,说明它是左子树还是右子树。
树当结点只有一个孩子是,它就不需要区分它是左还是右的次序,因此二者是不同的,这也是二叉树和树的最主要的差别。
虽然二叉树和树的概念不同,但有关树的基本术语对二叉树都适用。
5.3.2 特殊二叉树
1、斜树
所有的结点都只有左子树的二叉树叫左斜树;所有结点都只有右子树的二叉树叫右斜树,两者统称为斜树。
2、满二叉树
在二叉树中,所有分支结点都存在左子树和右子树,并且叶子结点都在同一层上,这样的二叉树称为满二叉树。
特点:
(1)非叶子结点的度一定是2;
(2)叶子结点全部在最底层;
(3)在同样深度的二叉树中,满二叉树的结点个数最多,叶子结点个数最多。
3、完全二叉树
对于一颗具有n个结点的二叉树按层序编号,如果编号为i(1 <= i <= n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。
特点:
(1)叶子结点只能出现在最下的两层;
(2)最下层的叶子一定集中在左部连续的位置;
(3)倒数第二层,若有叶子结点,一定都在右部连续的位置;
(4)对于任一结点,如果其右子树的最大层次为i,则其左子树的最大层次必为i或i+1。
5.3.3 二叉树的性质
性质1:在二叉树的第 i 层上至多有个结点(i >= 1)。
性质2:深度为k的二叉树至多有个结点(k >= 1)。
性质3:对于任何一棵二叉树T,如果其终端结点数为,度为2的结点数为
,则
。
性质4:具有n个结点的完全二叉树的深度为(
表示不大于x的最大整数)。
性质5:如果对一棵有n个结点的完全二叉树(其深度为) 的结点按层序(从第一层到第
层,每层从左到右),对任一结点有:
1、如果i = 1,则结点i是二叉树的根,无双亲;如果i > 1,则其双亲结点是i/2。
2、如果2i > n,则结点i为叶子结点,无左孩子,否则其左孩子为2i。
3、如果2i+1 > n,则结点无右孩子,否则其右孩子为2i + 1。