• 二叉排序树(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。

    例子:

  • 相关阅读:
    JDBC与ODBC的区别与应用
    java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序
    构造方法的继承
    2015-J. PUMA
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    阶乘之和 南邮NOJ 1093
    数的计算
    数的计算
  • 原文地址:https://www.cnblogs.com/oaoa/p/13740222.html
Copyright © 2020-2023  润新知