一个用JAVA实现的线段树类--泛型 重构.
来源:互联网 发布:ledv3.zh3软件 编辑:程序博客网 时间:2024/06/06 19:57
抽象类SegmentOperation.java:
public abstract class SegmentOperation<T> {public abstract T getMid(T o1, T o2);public abstract T getNext(T o1);public abstract int compare(T o1, T o2);}
线段树实现SegmentTree.java:
public class SegmentTree<T> {private SegmentTree<T> treeRight;private SegmentTree<T> treeLeft;private boolean isLeaf;private T begin;private T end;private int value;SegmentOperation<T> oper;public SegmentTree(T beginT, T endT, int segmentValue, SegmentOperation<T> operT) {begin = beginT;end = endT;value = segmentValue;oper = operT;treeRight = null;treeLeft = null;isLeaf = true;}private void update(int segmentValue) {value = segmentValue;if ( treeLeft != null ) {treeLeft.update(segmentValue);}if ( treeRight != null ) {treeRight.update(segmentValue);}}public void insert(T beginT, T endT, int segmentValue) {if ( (oper.compare(begin, beginT) == 0) && (oper.compare(end, endT) == 0 ) ) {update(segmentValue);return;}if ( oper.compare(beginT, endT) == 0 ) {return;}T mid = oper.getMid(begin, end);T midNext = oper.getNext(mid);if ( isLeaf ) {treeLeft = new SegmentTree<T>(begin, mid, value, oper);treeRight = new SegmentTree<T>(midNext, end, value, oper);isLeaf = false;}if ( oper.compare(mid, endT) >= 0 ) {treeLeft.insert(beginT, endT, segmentValue);}else if ( oper.compare(midNext, beginT) <= 0 ) {treeRight.insert(beginT, endT, segmentValue);}else {treeLeft.insert(beginT, mid, segmentValue);treeRight.insert(midNext, endT, segmentValue);}}}
代码中没有对Query Delete等方法进行实现,需要的话可以根据实际情况对其进行编写。
0 0
- 一个用JAVA实现的线段树类--泛型 重构.
- 线段树一个漂亮的实现
- 数据结构 二叉树的重构(java实现)
- Java实现重构二叉树
- 重构二叉树(Java实现)
- 线段树的实现
- 存储过程实现数据库重构、变更的一个案例
- java代码实现线段树
- 对一个类的重构
- 一个关于Java程序安全意识重构的工具
- 一个普通的.线段树
- hihocoder 1078 线段树的区间修改 java实现
- JBuilder2005实现重构之对重构的支持-Java基础-Java-编程开发
- [基本算法]Java——编写一个线段类,实现基本数学算法
- 一个项目的"重构"
- java重构、js与接口的实现
- 用java实现电脑的关机,重启
- 线段树的基本实现
- ubuntu下安装fcitx 中文输入法
- 发布iOS应用xcode到App Store(苹果商店) 详细解析 http://www.itjhwd.com/postappstorexjjx/
- session如何保存在专门的StateServer服务器中
- 实现常用的配置文件/初始化文件读取的一个C程序
- emctl start dbconsole遇到错误:OC4J Configuration issue
- 一个用JAVA实现的线段树类--泛型 重构.
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- hdu 4620 Fruit Ninja Extreme
- c语言字符串 数字转换函数大全
- 关于骨骼动画及微软示例Skinned Mesh的解析
- Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux
- 用Windows Storage Server 2008做iSCSI存储服务器
- *(leetcode)Validate Binary Search Tree
- debug下,jsp内容改变加载不到tomcat路径下