在一棵二叉树中,如果所有分支结点都有左孩子结点和右孩子结点,并且叶子结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树(full binary tree)。用户可以对满二叉树的结点进行层序编号(level coding),约定编号从树根为1开始,按照层数从小到大、同一层从左到右的次序进行,当然也可以从结点个数和树高度之间的关系来定义,即一棵高度为h且有2"-1个结点的二叉树称为满二叉树。
非空满二叉树的特点如下:
- 所有叶子结点都在最下一层;
- 只有度为0和度为2的结点。
若二叉树中最多只有最下面两层的结点的度数可以小于2,并且最下面一层的叶子结点都依次排列在该层最左边的位置上,则这样的二叉树称为完全二叉树(complete binary tree),同样可以对完全二叉树中的每个结点进行层序编号,编号的方法和满二叉树相同。
满二叉树是完全二叉树的一种特例,并且完全二叉树与同高度的满二叉树的对应位置结点有同一编号。
非空完全二叉树的特点如下:
- 叶子结点只可能在最下面两层中出现;
- 对于最大层次中的叶子结点,都依次排列在该层最左边的位置上;
- 如果有度为1的结点,只可能有一个,且该结点只有左孩子而无右孩子;
- 按层序编号时,一旦出现编号为i的结点是叶子结点或只有左孩子,则编号大于i的结点均为叶子结点;
- 当结点总数n为奇数时,n1=0,当结点总数n为偶数时,n1=1。