zoukankan      html  css  js  c++  java
  • lintocde-247-线段树的查询 II

    247-线段树的查询 II

    对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素)
    实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到数组中在区间[start, end]内的元素个数。

    注意事项

    It is much easier to understand this problem if you finished Segment Tree Buildand Segment Tree Query first.

    样例

    对于数组 [0, 空,2, 3], 对应的线段树为:

    query(1, 1), return 0
    query(1, 2), return 1
    query(2, 3), return 2
    query(0, 2), return 2

    标签

    二叉树 LintCode 版权所有 线段树

    思路

    lintcode-202-线段树的查询 类似,只需注意边界条件

    code

    /**
     * Definition of SegmentTreeNode:
     * class SegmentTreeNode {
     * public:
     *     int start, end, count;
     *     SegmentTreeNode *left, *right;
     *     SegmentTreeNode(int start, int end, int count) {
     *         this->start = start;
     *         this->end = end;
     *         this->count = count;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    class Solution {
    public:
        /*
         * @param root: The root of segment tree.
         * @param start: start value.
         * @param end: end value.
         * @return: The count number in the interval [start, end]
         */
        int query(SegmentTreeNode * root, int start, int end) {
            // write your code here
            if(root == NULL || start > end) {
                return 0;
            }
            int mid = (root->start + root->end) / 2;
            if (start <= root->start && end >= root->end) {
                return root->count;
            }
            else if (mid < start) {
                return query(root->right, start, end);
            }
            else if (mid + 1 > end) {
                return query(root->left, start, end);
            }
            else {
                return query(root->left, start, mid) + query(root->right, mid + 1, end);
            }
        }
    };
    
  • 相关阅读:
    linux 如何显示一个文件的某几行(中间几行)
    Cookie——Javascript
    CSS——4种定位
    Javascript——DOM
    javascript之八——BOM
    Javascript——闭包、作用域链
    Struct2
    javaweb——Servlet作为控制器
    排序算法——快排思想
    java——获取从控制台输入的数据的方法
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7307787.html
Copyright © 2011-2022 走看看