数据结构学习总结(四)

14.什么是哈夫曼树?它有哪些特点?它的构造方法是什么?

在含有N个带权子节点的二叉树中,其中带权路径最小的二叉树称为哈夫曼树。Huffman Tree特点

  1. 权值越大的结点,距离根节点越近
  2. 树中没有度为1的结点。哈夫曼树又称为严格的(正则的)二叉树

 

构造方法如下:

将N个结点看做事含N棵树的一个森林,在森林中选取两颗根节点权值最小的树,作为左右子树,构造新节点,新节点的权值为左右子树的权值之和,删除两棵子树,并将构造的新树加入到森林中,重复上面的构造过程,直到森林中只剩下一棵树为止。

 

15.什么是前缀编码?哈夫曼编码是前缀编码吗?为什么?

 

没有一个编码是另一个编码的前缀,这样的编码为前缀编码。

 

由哈夫曼树得到的哈夫曼编码,在此二叉树中每一个结点的左分支标记为0,右分支标记为1,最终德奥的每一个叶子节点的编码作为二进制编码,每个叶子节点的二进制编码都代表从根到该叶子节点的路径,因此它是前缀编码。

 

16.二叉树怎么存储?

 

顺序存储结构:用一组地址连续的存储单元依次自上而下,自左向右存储完全二叉树上的结点信息。这种顺序存储结构仅适用于完全二叉树。否则其他形式的二叉树用顺讯存储,会浪费不少存储空间。

链式存储结构:二叉链表、三叉链表、含有n个结点的二叉链表中有n+1个空链域。

 

17.常用的树和森林的遍历算法有哪些?他们的算法思想分别是什么?

树的遍历算法有先根遍历和后根遍历;

先根遍历算法:先访问根节点,再按照从左到右的顺序遍历根节点的每一棵子树。

后根遍历算法:按从左到右的顺序遍历根节点的每一棵子树,之后再访问根节点。

 

森林的遍历算法有前序遍历和中序遍历;

前序遍历算法:先访问森林中每一棵树的根节点,再前序遍历每一棵树中根节点的子树森林,然后前序遍历除去第一棵树之后剩余数构造的森林;

中序遍历算法:中序遍历森林中第一棵树的根节点的子树森林,接着访问第一棵树的根节点,最后中序遍历除去第一棵树之后剩余的树构造的森林。

猜你喜欢

转载自blog.csdn.net/weixin_44339726/article/details/86523781