2019中科大软院算法设计与分析的期末复习重点

文档是用幕布写的,上传到csdn格式有些变化,附上原文档链接:点这里

19级算法设计与分析期末复习重点
  • 数据结构
    • 红黑树
      • 红黑树的性质
        • 1.本身是一棵二叉查找树
        • 2.每个结点要么是黑色要么是红色  
        • 3.树根结点的颜色为黑色 
        • 4.叶结点(nil)为黑色 
        • 5.如果某个结点为红色,则它的左、右孩子结点均为黑色
        • 6.  对树中任一结点,所有从该结点出发到其叶结点的路径中均包含相同数目的黑色结点  
      • 红黑树的操作及时间
        • 插入:时间复杂度O(lgn)
        • 删除:时间复杂度O(lgn)
        • 查找结点,找前驱、后继:时间复杂度O(lgn)
      • 红黑树的应用
        • 序统计树
          • 概念
            • 序统计就是在一系列数中找出最大、最小值,某个数的序值等操作。
            • 解决动态序统计问题
            • Size[x]域的定义为:以x为根的子树所包含的内部结点数(包括x本身)
            • Size[x]=Size[x.left]+Size[x.right]+1
          • 找第i个最小值操作:算法时间:O(lgn)
          • 求x的序值操作:算法时间:O(lgn)
          • 完成一次插入或删除操作:时间为O(lgn)
        • 区间树
          • 概念
            • 关键字=区间的低端点
            • 新增域int:区间的端点值
            • 新增域max:x.max=Max(x.int.high, x.left.max, x.right.max )
          • 查找操作:算法时间O(lgn)
      • 数据结构的扩张步骤
        • 1. 挑选一个合适的基本数据结构
        • 2. 决定在基本数据结构上应增加的信息
        • 3. 修改基本数据结构上的操作并维持原有的性能
        • 4. 修改或设计新的操作
      • 定理
        • 1.具有n个内部结点的红黑树高度h最多为2lg(n+1)  ,即h=O(lgn)
        • 2.黑高度:黑高度bh(x)表示从x结点出发(不包含x结点)到其叶结点路径上的黑色结点个数。
        • 3.令f为具有n个结点的红黑树扩张后的一个域,如果结点x的f域值仅需通过结点x、left[x]、right[x]以及f(left[x])、f(right[x])就可获得,那么插入和删除操作对树T中所有结点f值进行维护将维持O(lgn)的性能
        • 区间树的查找算法,要么返回与i重叠的某个结点,要么返回为空表示树T中未找到与i重叠的区间。
    • 二项堆
      • 二项树
        • 定义
          • 仅包含一个结点的有序树是一棵二项树称为B0树。
          • 二项树Bk由二棵Bk-1树组成
          • 其中一棵Bk-1树的根作为另一棵Bk-1树根的最左孩子(k≥0)。
        • 性质
          • 1. 有2^k个结点 ,即n=2^k
          • 2. 树的高度为k , 即k=lgn(注:二项树的高度从0开始计数)
          • 3. 深度为i处恰好有  个结点           0≤i≤k
          • 4. 根的度最大且为k,若根的孩子从左到右编号为k-1,k-2,…,1,0,则孩子i恰好是子树Bi的根。
          • 5. 一棵具有n个结点的二项树中,任一结点的最大度为lgn
      • 二项堆
        • 定义
          • 二项堆H是一个满足下述条件的二项树的集合:
          • ①H中的每棵二项树满足最小堆性质
          • ②对任意的非负整数k,H中至多有一棵二项树根的度为k(保证每一棵二项树度的唯一性)
      • 根表的性质
        • eg:head[H]------->B0-------->B2-------->B3
        • ①根表为一单链表
        • ②根表链接所有二项树的根结点
        • ③根表按照度的递增序链接
      • 二项堆的操作
        • 1. 创建空堆:算法时间O(1)
        • 2. 插入结点:算法时间O(lgn)
          • ①将待插入结点变为一个只有一个结点的二项堆
          • ②合并两个二项堆
        • 3. 合并堆H1,H2:算法时间O(lgn)
          • ① 先把两个根表合并为一个根表
          • ②合并度相同的两颗二项树。(如果有3个度相等的二项树,优先合并后两个)
        • 4. 取最小值:算法时间O(lgn)
          • 遍历根表
        • 5. 抽取最小值:算法时间O(lgn)
          • ① 把该二项树根结点移除,所有孩子形成一个二项堆
          • ②合并两个二项堆
        • 6. x减值为k&#
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值