3、森林转换成二叉树
转换步骤:
① 将 F{T1, T2,??6??8 ,Tn} 中的每棵树转换成二叉树。
② 按给出的森林中树的次序,从最后一棵二叉树开始,每棵二叉树作为前一棵二叉树的
根结点的右子树,依次类推,则第一棵树的根结点就是转换后生成的二叉树的根结点,如图
所示。
4、二叉树转换成森林
上述转换规则是递归的,可以写出其递归算法。以下给出具体的还原步骤。
① 去连线。将二叉树 B 的根结点与其右子结点以及沿右子结点链方向的所有右子结点的连
线全部去掉,得到若干棵孤立的二叉树,每一棵就是原来森林 F 中的树依次对应的二叉树。 ② 二叉树的还原。将各棵孤立的二叉树按二叉树还原为树的方法还原成一般的树。
5、树的遍历
由树结构的定义可知,树的遍历有二种方法。
(1) 先序遍历:先访问根结点,然后依次先序遍历完每棵子树。如图,先序遍历的次序是:
ABCDEFGIJHK
(2) 后序遍历:先依次后序遍历完每棵子树,然后访问根结点。如图,后序遍历的次序是:
CDBFIJGHEKA
树的先序遍历实质上与将树转换成二叉树后对二叉树的先序遍历相同。
树的后序遍历实质上与将树转换成二叉树后对二叉树的中序遍历相同
2019 年若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其遍历序列
与 T 的后根遍历序列相同的是()
A.先序遍历 B.中序遍历 C.后序遍历 D.按层遍历
2020 年已知森林 F 及与之对应的二叉树 T,若 F 的先根遍历序列是 a, b, c, d, e, f,中
根遍历序列是 b, a, d, f, e, c 则 T 的后根遍历序列是:
A、b, a, d, f, e, c B、b, d, f, e, c, a C、b, f, e, d, c, a D、f, e, d, c, b, a 考点 15:哈夫曼树(★★★)
1、最优二叉树(Huffman 树)
① 结点路径:从树中一个结点到另一个结点的之间的分支构成这两个结点之间的路径。
② 路径长度:结点路径上的分支数目称为路径长度。
③ 结点的带权路径长度:从该结点的到树的根结点之间的路径长度与结点的权(值)的乘积
④权(值):各种开销、代价、频度等的抽象称呼。
⑤树的路径长度:从树根到每一个结点的路径长度之和。
2、Huffman 树的构造
① 根据 n 个权值{w1, w2, ??6??8 ,wn},构造成 n 棵二叉树的集合 F{T1, T2, ??6??8 ,Tn},其中每棵二
叉树只有一个权值为 wi 的根结点,没有左、右子树;
② 在 F 中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且新的二
叉树根结点权值为其左、右子树根结点的权值之和;
③ 在 F 中删除这两棵