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交换数据
  • 相关阅读:
    高级定制_百度百科
    大叔也学Xamarin系列
    WebApi系列~dynamic让你的省了很多临时类
    大叔也说Xamarin~Android篇~支付宝SDK的集成
    知方可补不足~sqlserver中使用ROW_NUMBER进行的快速分页
    EF架构~有时使用SQL更方便
    【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.h
    线程同步
    泛型接口的实现方式之二
    jsp获得本地及serverIP的方法
  • 原文地址:https://www.cnblogs.com/rimochiko/p/8309380.html
Copyright © 2011-2022 走看看