zoukankan      html  css  js  c++  java
  • lintcode-202-线段树的查询

    202-线段树的查询

    对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。
    为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子区间[start, end]内的最大值。

    注意事项

    在做此题之前,请先完成 线段树构造 这道题目。

    样例

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

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

    标签

    LintCode 版权所有 二叉树 线段树

    思路

    利用递归

    code

    /**
     * Definition of SegmentTreeNode:
     * class SegmentTreeNode {
     * public:
     *     int start, end, max;
     *     SegmentTreeNode *left, *right;
     *     SegmentTreeNode(int start, int end, int max) {
     *         this->start = start;
     *         this->end = end;
     *         this->max = max;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    class Solution {
    public:
        /**
         *@param root, start, end: The root of segment tree and 
         *                         an segment / interval
         *@return: The maximum number in the interval [start, end]
         */
        int query(SegmentTreeNode *root, int start, int end) {
            // write your code here
            int mid = (root->start + root->end) / 2;
            if (start <= root->start && end >= root->end) {
                return root->max;
            }
            else if (mid < start) {
                return query(root->right, start, end);
            }
            else if (mid + 1 > end) {
                return query(root->left, start, end);
            }
            else {
                return max(query(root->left, start, mid), query(root->right, mid + 1, end));
            }
        }
    };
    
  • 相关阅读:
    一个很简单的脑筋急转弯问题
    DataGrid PCV排序学习
    VS2010 出现打开关联文档错误的解决方案
    JS 简繁体互转代码
    js 常用正则表达式表单验证代码
    【转】自然语言处理(NLP)网上资源整理
    声卡编程讲解
    视频会议1
    转 语音处理资源
    编译WebRTC
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7301297.html
Copyright © 2011-2022 走看看