• 树的基础概念(二)


    堆:经过排序的完全二叉树,其中任一非叶子节点的值均不大于(或不小于)其左孩子和右孩子结点的值。

    最大堆和最小堆是二叉堆的两种形式。

    最大堆:根节点的键值是所有堆结点键值中最大者。

    最小堆:根节点的键值是所有堆结点键值中最小者。

    最大-最小堆:集结了他俩的优点。是最大层和最小层交替出现的二叉树,即最大层节点的儿子属于最小层,最小层节点的儿子属于最大层。以最大(小)层节点为根节点的子树保有最大(小)堆性质:根节点的键值为该子树结点键值中最大(小)项。

    =======================================================

    二叉排序树

    (1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;

    (2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;

    (3)左、右子树也分别为二叉排序树;

    =======================================================

    平衡二叉树(AVL树)

    它是一颗空树 或

    它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树

    常用算法:红黑树,AVL,Treap。

    最小二叉平衡树的节点公式:F(n) = F(n-1)+F(n-2)+1

    1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量

    =======================================================

    哈夫曼树

    它是带权路径长度最小的二叉树。

    哈夫曼树的构造:

    有n个权值,则构造出哈夫曼树有n个叶子节点。

    (1)将1……n看成是n棵树的集合;

    (2)集合中选出两个根节点的权值最小的树合并,作为一颗新树的左右子树,且新树的根节点权值为其左右子树节点权值之和;

    (3)从集合中删除选取的两棵树,并将新树加入集合

    (4)重复2,3步骤,直到集合中只剩一颗树为止

  • 相关阅读:
    XSS 防御方法总结
    IE浏览器兼容方案
    js 排序算法
    webapck 打包体积优化策略
    webapck 速度优化策略
    Grunt、Gulp和Webpack对比
    数据库中的undo日志、redo日志
    使用sysbench对mysql压力测试
    java -cp & java jar的区别
    使用BenchmarkSQL测试PostgreSQL
  • 原文地址:https://www.cnblogs.com/niceforbear/p/4529450.html
Copyright © 2020-2023  润新知