二叉树、二叉排序树、平衡二叉树、红黑树、B树、B+树、哈弗曼树和哈夫曼编码

二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。具有n个节点的完全二叉树的深度为log2(n+1)。深度为k的完全二叉树,至少有2^(k-1)个节点,至多有2^k-1个节点。

遍历方式:先序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)。只知道前序和后序遍历不能确定唯一的二叉树。

 

二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;如右图:                            《二叉树、二叉排序树、平衡二叉树、红黑树、B树、B+树、哈弗曼树和哈夫曼编码》

 

平衡二叉树——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。最小二叉平衡树的节点的公式如下                    F(n)=F(n-1)+F(n-2)+1 ,F(1)=1,F(2)=2.

 

 

哈夫曼树:

例题1:假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为86,1011。(这里假定左节点的值小于右节点的值) 《二叉树、二叉排序树、平衡二叉树、红黑树、B树、B+树、哈弗曼树和哈夫曼编码》

算法要求选取根结点权值最小的两棵二叉树作为左右子树构造一棵新的二叉树,默认是左边放下的权值。

例题2:设某哈夫曼树中有199个结点,则该哈夫曼树中有(100)叶子结点。

解析:在哈夫曼树种只有出度为0的节点和出度为2的节点。把n个节点构建成哈夫曼树,相当于把n个只有根节点的子树合并成一个树,其中将任意两个子树合并成一个棵树需要增加一个节点,则一共需要增加n-1个节点,才能使其变成一棵哈夫曼树,即这棵哈夫曼树一种有2n-1个树。2*n-1=199;n=100;

例题3:使用哈夫曼编码来编码字符串”aaaabbcd”时,得到的编码长度为14.

解析:《二叉树、二叉排序树、平衡二叉树、红黑树、B树、B+树、哈弗曼树和哈夫曼编码》

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/coderecord/article/details/82022808
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞