一 概述
二叉树为多种树形结构中的一种,其特点为每个结点至多只有两棵子树,即二叉树中不存在度大于2的结点,并且二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树同样是通过递归的形式进行定义。二叉树是n(n>=0)个结点的有限集合:
- 当n=0的时候,该树为空二叉树。
- 当n>0的时候,二叉树由一个根结点和互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别为一棵二叉树。
二叉树是有序树,若将其左,右子树颠倒,则成为另一棵不同的二叉树。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。
二叉树与度为2的有序树的区别:
- 度为2的树至少右3个结点,而二叉树可以为空。
- 度为2的有序树的孩子的左右次序是相对与另一个孩子而言的,若某个结点只有一个孩子,则这个孩子就无须区分其左右次序,而二叉树无论其左右孩子是否同时存在,均需确定其左右次序,即二叉树的结点次序不是相对另一个结点而言,而是确定的。
二 几种特殊的二叉树
满二叉树:一棵高度为h,且含有2^h - 1个结点的二叉树为满二叉树,即树中的每层都含有最多的结点。而且满二叉树的叶子结点都集中在二叉树的最下一层,并且除叶子结点之外的每个结点度数均为2。
完全二叉树:高度为h,有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中的编号1~n的结点一一对应时,称为完全二叉树。完全二叉树的特点如下:
- 若i<=n/2(取下界),则结点i为分支结点,否则为叶子节点。
- 叶子结点只可能在层次最大的两层上出现。对于最大的层次中的叶子结点,都依次排列在该层最左边的位置上。
- 若有度为1的结点,则只可能有一个,且该结点只有左孩子而无右孩子(重要特征)。
- 按层序编号后,一旦出现某结点(编号为i)为叶子结点或只有左孩子,则编号大于i的结点均为叶子结点。
- 若n为奇数,则每个分支结点都有左孩子和右孩子;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左,右孩子都存在。
二叉排序树:左子树上所有结点的关键字均小于根结点的关键字;右子树上的所有结点关键字均大于根结点的关键字;左子树和右子树各是一棵二叉排序树。
平衡二叉树:树上任一结点的左子树和右子树的深度之差不超过1。