1、何谓树?
树其实就是一个根节点,下面有子节点构成的;树中又有一种树叫二叉树:每一个节点只有两个子节点连接的树;二叉树中又有一种树叫做哈夫曼树(也称最优树)
2、树的组成:
①节点之间的路径长度:从一个节点到另一个节点之间的分支数目
②树的路径长度:从树的根到树中每一个节点的路径长度之和
③节点的带权路径长度:从该节点到树根之间的路径长度与节点上权的乘积
④树的带权路径长度:树中所有叶子节点的带权路径长度之和
3、为何哈夫曼树被称为最优树?
因为哈夫曼树是使得带权路径最短的树。
4、哈夫曼树的构建:
①根据给定的n个权值(n1,n2,n3,……nn)构造n棵二叉树的集合F=(T1,T2,T3……Tn)其中只含有一个权值,左右子树为空。
②在F中选区两棵根节点的权值最小的树作为左右子树构建一个新的二叉树,并把这棵二叉树的根节点的权值为左右子树上的根节点的权值之和
③将新构建的树加入到F中,并删除步骤二中的两棵树
④重复步骤二和三,直到F中只含有一棵树,则为哈夫曼树。
5、哈夫曼编码:
从哈夫曼树根节点开始,对左子树分配代码"0",对右子树分配代码"1",一直到达叶子节点为止,然后将从树根沿每条路径到达叶子节点的代码排列起来,就是哈夫曼编码了。
6、树的遍历方法:
①前序遍历:先根,后左,在右
②中序遍历:先左,后根,在右
③后序遍历:先左,后右,在根