LintCode:线段树的查询

来源:互联网 发布:如何投诉淘宝卖家 编辑:程序博客网 时间:2024/06/06 01:32

LintCode:线段树的查询

"""Definition of SegmentTreeNode:class SegmentTreeNode:    def __init__(self, start, end, max):        self.start, self.end, self.max = start, end, max        self.left, self.right = None, None"""class Solution:     # @param root, start, end: The root of segment tree and     #                          an segment / interval    # @return: The maximum number in the interval [start, end]    def query(self, root, start, end):        # write your code here        if root == None:            return 0        if root.start > end or root.end < start or start > end:            return 0        if root.start >= start and root.end <= end:            return root.max        mid = root.start + (root.end - root.start) / 2        left_max = self.query(root.left, start, min(mid, end))        right_max = self.query(root.right, max(start, mid), end)        return max(left_max, right_max)

Java

/** * Definition of SegmentTreeNode: * public class SegmentTreeNode { *     public int start, end, max; *     public SegmentTreeNode left, right; *     public SegmentTreeNode(int start, int end, int max) { *         this.start = start; *         this.end = end; *         this.max = max *         this.left = this.right = null; *     } * } */public class Solution {    /**     *@param root, start, end: The root of segment tree and      *                         an segment / interval     *@return: The maximum number in the interval [start, end]     */    public int query(SegmentTreeNode root, int start, int end) {        // write your code here        if(root == null){            return 0;        }        if(root.start > end || root.end < start || start > end){            return 0;        }        if(root.start >= start && root.end <= end){            return root.max;        }        int mid = root.start + (root.end - root.start)/2;        int leftMax = query(root.left, start, Math.min(mid, end));        int rightMax = query(root.right, Math.max(start, mid), end);        return Math.max(leftMax, rightMax);    }}
0 0
原创粉丝点击