二叉排序树(BST)、平衡二叉树(AVL)、哈夫曼树的部分性质

1、二叉排序树的中序遍历得到的就是所有结点从小到大的排列。

   平衡二叉树一定是二叉排序树。

   二叉排序树上结点的关键字的值不可能相同

2、二叉排序树的查找效率,主要取决于树的高度。

   平均查找长度(ASL)=各层结点树 * 深度 / 总结点数

   查找成功和查找失败 的平均查找长度,如下图所示,叶子结点可以查找成功,叶子结点再往下则查找失败。

 3、二叉排序树删除一个结点,可以分三种情况。

  a、删除叶结点,直接删除,不改变二叉排序树的性质。

  b、删除的结点z有一个左子树或者右子树,则直接让z的子结点代替z。

  c、若结点z有左右两颗子树,则用按中序排列得到的z结点的直接后继(或直接前驱)代替z

第三种情况的例子:

4、平衡二叉树的  平衡因子=左子树深度-右子树深度

5、深度为h的平衡二叉树的最少结点数 Nh=Nh-1+Nh-2+1。

   当所有非叶子结点平衡因子为1的时候,整个平衡二叉树拥有最少结点数。根结点的深度为1,所以左子树的高度为h-1,因为平衡因子为1,即根结点的左子树比右子树的深度大1,所以右子树的深度为h-2,这样可以拥有最少的结点数。我们设N0=0,由图可知N1=1,N2=2。其他深度的最少结点数可以根据公式计算,在实际计算中可以看到利用了斐波那契数列。

6、平衡二叉树AVL的调整方法:LL、RR、LR、RL

 

 

 

 每次调整的是从下往上数最小的不平衡子树!!

 只需要找三个结点。  

7、带权路径长度(WPL),指的是所有叶结点的带权路径长度之和。

  WPL= ∑ 每个叶结点的权值 * 该叶结点到根结点的路径长度

  如图所示:

 8、哈夫曼树:就是带权路径长度WPL最小的二叉树。

 9、哈夫曼编码中没有一个编码是另一个编码的前缀。构造出的哈夫曼树左子树为0,右子树为1,即可得到编码。

  相同的结点构造出来的哈夫曼树可能不同,但是他们的带权路径长度WPL是相同的。

  构造过程中需要遵循几个原则:

  a、左侧的结点小于右侧的结点 

     b、如果两个结点合并得到一个新结点,剩下的结点中有两个或两个以上结点的值都小于这个新结点,则需要把哪两个最小的结点,单独生成一棵树,随后再合并。如下图中的6、7、8、9。

例子:

原文地址:https://www.cnblogs.com/oaoa/p/13740222.html