247. Segment Tree Query II

最后更新

二刷
09-Jna-2017

利用线段树进行区间查找,重点还是如何判断每一层的覆盖区间,和覆盖去见与当前NODE值域的关系。

public class Solution {

    public int query(SegmentTreeNode root, int start, int end) {
        if (root == null) return 0;
        if (start > root.end || end < root.start) return 0;
        
        int coveredStart = Math.max(start, root.start);
        int coveredEnd = Math.min(end, root.end);
        if (root.start == coveredStart && root.end == coveredEnd) return root.count;
        
        return query(root.left, coveredStart, coveredEnd) + 
               query(root.right, coveredStart, coveredEnd);
    }
}
原文地址:https://www.cnblogs.com/reboot329/p/6268452.html