zoukankan      html  css  js  c++  java
  • 算法5-7:区间检索

    间隔搜索问题给出了一系列的范围,而测试的时间间隔,寻找和测试间隔交叉间隔。


    为了解决问题,须要专门编写一个类,这个类的接口例如以下:

    public interface IntervalST<Key extends Comparable<Key>, Value> {
        void put(Key lo, Key hi, Value value);
        Value get(Key lo, Key hi)
        void delete(Key lo, Key hi)
        Iterable<Value> intersect(Key lo, Key hi);
    }


    每一个节点中有两个值。第一个值是区间的起点和终点,第二个值是该节点以及子节点中最大的区间终点。为了简化问题,将二叉树以区间起点作为keyword。



    插入操作


    插入区间的时候,依据普通二叉树的规则进行插入。在插入完毕之后须要更新全部父节点的最大右区间。


    查找操作


    查找操作须要运行一下步骤:

    • 假设当前节点与被搜索的区间有交集,返回当前节点

    • 假设左子节点是空的,向右側深入

    • 假设整个区间在当前节点的左側,向左側深入

    • 其余情况向右側深入


    复杂度


    全部操作的复杂学位logN。


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    HTML5表单_form
    HTML第二篇
    快速创建1000个目录
    centos7忘记root密码重置
    centos7更改网卡名称
    centos7磁盘在线扩容
    sqlserver开启远程访问
    安装php后无法动态加载库
    编译openssl和Apache报错checking for SSL_CTX_new... no
    centos6.5设置key登录
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4856317.html
Copyright © 2011-2022 走看看