区间树上的重叠区间查找算法——C++

区间树上的重叠区间查找算法——C++

题目:

  1. 区间树的构造;
  2. 查找算法Interval-Search(T, i);

算法设计:     

步骤一:区间树是在红黑树基础上进行的简单的数据结构扩张。选择一棵红黑树,在每个结点x中加入一个区间属性x.int,设置x的关键字为区间的低端点x.int.low。     

步骤二:附加信息。附加的信息为x.max,其值为以x为根的子树中所有区间的端点的最大值。                                                                                                   

步骤三:除了对结点进行修改,还有修改红黑树的左旋右旋维护max域的取值、插入操作。                                                                                                             

步骤四:设计新的操作Interval-Search(T,i),找出树T中与区间i重叠的那个结点,若树中与i重叠的结点不存在,返回指向哨兵T.nil的指针。



 

算法分析:

区间树是数据结构扩张的典型应用,在区间的查找上提供了nlogn时间复杂度的算法。INTERVAL_SEARCH为查找与i重叠的区间x,过程以从x为根的树根开始,逐步向下搜索,找到一个重叠区间或者x指向T.nil,时过程结束。由于基本循环的每次迭代耗费O(1)的时间,有因为n个结点的红黑树高度为O(logn),所以INTERVAL_SEARCH过程耗费O(logn)的时间。


  


总结:

区间树是数据结构扩张的典型应用,在区间的查找上提供了nlogn时间复杂度的算法。利用成熟数据结构扩张解决延伸的实际问题是一种效率很高的方法,也降低了解决成本。



  /*
 *File name:区间树查找 
 *Author:Fei Yuling		Versi
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值