日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个用JAVA实现的线段树类--泛型 重构.

發(fā)布時(shí)間:2025/6/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个用JAVA实现的线段树类--泛型 重构. 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

抽象類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); }

線段樹實(shí)現(xiàn)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等方法進(jìn)行實(shí)現(xiàn),需要的話可以根據(jù)實(shí)際情況對其進(jìn)行編寫。

總結(jié)

以上是生活随笔為你收集整理的一个用JAVA实现的线段树类--泛型 重构.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。