zoukankan      html  css  js  c++  java
  • 区间树

    概念:

    区间树是在红黑树基础上进行扩展得到的支持以区间为元素的动态集合的操作,

    每个节点的关键值是区间的左端点。通过建立这种特定的结构,可是使区间的元素的查找和插入都可以在O(lgn)的时间内完成。    

    相比于基础的数据结构,增加了一个max[x],即以x为根的子树中所有区间的断点的最大值

    区间树如下图所示:

    区间查找

          实现INTERVAL-SEARCH(T, i),返回一个和区间i重叠的区间,若无,则返回nil[T]。基本思想是我们通过左子树的max进行划分:如果左子树的max值小于low[i],则左 子树不存在这样的区间和i重叠,转到右子树;否则,转到右子树,因为左子树的端点小于右子树,若左子树无可能,右子树也必然不可能。

          INTERVAL-SEARCH(T, i)整个过程如下:

    1. INTERVAL-SEARCH(T, i)  
    2. x ← root[T]  
    3. while x≠nil[T] and i does not overlap x           //当要查找的区域和当前节点没有重叠
    4.    do if left[x]≠nil[T] and max[left[x]]≥low[i]   //如果当前节点左子树的max大于查抄区域的下限
    5.          then x ← left[x]   //则从左子树查找
    6.          else x ← right[x]  //否则从右子树查找
    7. return x  

        每次调用,必定会下降一层,故INTERVAL-SEARCH的时间复杂度为O(lgn)

    参考文献:

    http://blog.csdn.net/zhanglei8893/article/details/6534848

  • 相关阅读:
    webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
    webpack 支持的模块方法
    在nodejs中引进模块要经历的步骤
    git 学习笔记(常用命令)
    http缓存(http caching)
    http协议——cookie详解
    JavaScript实现排序二叉树的相关算法
    JavaScript将小写金额转换成大写
    React——组件的生命周期函数
    React——高阶组件
  • 原文地址:https://www.cnblogs.com/cutepig/p/5859739.html
Copyright © 2011-2022 走看看