zoukankan      html  css  js  c++  java
  • lintcode 11. 二叉查找树中搜索区间

    class Solution {
    public:
        vector<int> res;
        int k11,k22;
        static bool comp(const int &a,const int &b)
        {
            return a<b;
        }
        /*
         * @param root: param root: The root of the binary search tree
         * @param k1: An integer
         * @param k2: An integer
         * @return: return: Return all keys that k1<=key<=k2 in ascending order
         */
        vector<int> searchRange(TreeNode * root, int k1, int k2) {
            // write your code here
            k11=k1;
            k22=k2;
            dfs(root);
            sort(res.begin(),res.end(),comp);
            return res;
        }
        
        void dfs(TreeNode *node){
            if(node == NULL)
                return;
            
            if(node->val <= k22 && node->val >= k11){
                res.push_back(node->val);
            }
            dfs(node->left);
            dfs(node->right);
        }
    };

    这个题目也是挺简单的,不过这里用到了对vector的排序。

    会发现是直接传入开头和结尾的,然后进一步去了解一下其中的原理:

    vector采用的数据结构很简单:线性的连续空间。

    它以两个迭代器start和finish分别指向配置得来的连续空间中目前已经被使用的空间。迭代器end_of_storage指向整个连续空间的尾部。

    另外对于vector这里是常用的函数(来源百度):

    • 1.push_back   在数组的最后添加一个数据
    • 2.pop_back    去掉数组的最后一个数据 
    • 3.at                得到编号位置的数据
    • 4.begin           得到数组头的指针
    • 5.end             得到数组的最后一个单元+1的指针
    • 6.front        得到数组头的引用
    • 7.back            得到数组的最后一个单元的引用
    • 8.max_size     得到vector最大可以是多大
    • 9.capacity       当前vector分配的大小
    • 10.size           当前使用数据的大小
    • 11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
    • 12.reserve      改变当前vecotr所分配空间的大小
    • 13.erase         删除指针指向的数据项
    • 14.clear          清空当前的vector
    • 15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)
    • 16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)
    • 17.empty        判断vector是否为空
    • 18.swap         与另一个vector交换数据
  • 相关阅读:
    jQuery效果
    jQuery事件
    jQuery安装和基础语法
    html5响应式布局
    html5新特性--音频视频,拖放
    js-浏览器DOM
    js-Array
    js-Date
    js-String
    Cocoa touch(五):UIControl
  • 原文地址:https://www.cnblogs.com/rimochiko/p/8309380.html
Copyright © 2011-2022 走看看