1. 满二叉树
一棵非空高度为k(k>=0)的满二叉树,是有2的k+1次幂再减1个结点的二叉树。
特点:叶结点都在第k层上;每个分支结点都有两个子结点;叶结点个数等于非叶结点个数加1;
2. 完全二叉树
一颗包含n个结点高为k的二叉树T,当按层次顺序编号T的所有结点,对应一颗高为k的满二叉树中编号有1至n的那些结点时,T被称为完全二叉树。
3. 树转换成二叉树
在所有兄弟结点之间加一条连线;
对每个结点,除保留与其大孩子和其大兄弟结点的连线之外,去掉该结点与其其他孩子结点的连线;
调整部分连线方向、长短使之成为规范图形。
4. 森林转换成二叉树
方法一:引进一个虚拟总跟结点R,把森林中所有根结点看成兄弟结点。
方法二:将森林中每一颗树转换成二叉树,可将第一课二叉树的根结点视为总根,将其他二叉树的根结点视为兄弟。
5. 二叉树转换成树
如果二叉树根结点的右子树为空,则能自然地将该二叉树转换成对应的树:
对每个结点,找其大兄弟结点之父结点,并在两者间加一连线;
去掉所有父结点和右孩子之间的连线;
调整部分连线方向、长短使之成规范图形。
6. 二叉树转换成森林
如果根结点的右子树非空,则能将二叉树转换成相应的森林。
从根结点出发,断开其与其右孩子的连线,再将没有右孩子的二叉树按上述方法转换成树。
7. 哈夫曼树和哈夫曼编码
最优二叉树:在外结点权值分别为w0, w1, ......., wn-1的扩充二叉树中,加权外通路长度最小的扩充二叉树称为最优二叉树。
哈夫曼树是最优二叉树。
哈夫曼树的构造:
在森林中取权值最小的两个根结点,合并成一颗二叉树,并生成一个新结点T,作为这两个结点的父结点,T的权值是它的两个子结点的权值之和;
对新的森林重复上一步操作,直至森林中只有唯一的根结点。
哈夫曼编码:将哈夫曼树中每个分支结点的左分支标上0,右分支标上1,吧从根结点到每个叶结点的路径上的标号连接起来,作为该叶结点所代表的字符的编码。