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

    二叉查找树中搜索区间

    给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。

    样例

    如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22].

    标签

    二叉查找树 二叉树

    思路

    结合中序遍历,将遍历的节点与阈值点比较,符合条件的节点接入返回数组中。

    code

    class TreeNode {
    public:
        int val;
        TreeNode *left, *right;
        TreeNode(int val) {
            this->val = val;
            this->left = this->right = NULL;
        }
    };
    
    class Solution {
    public:
        /**
         * @param root: The root of the binary search tree.
         * @param k1 and k2: range k1 to k2.
         * @return: Return all keys that k1<=key<=k2 in ascending order.
         */
        vector<int> searchRange(TreeNode* root, int k1, int k2) {
            // write your code here
            if(root == NULL)
                return vector<int>();
    
            vector<int> result;
            inorderTraversal(root, result, k1, k2);
            return result;
        }
    
        void inorderTraversal(TreeNode *root, vector<int> &order, int k1, int k2) {
            if(root->left != NULL)
                inorderTraversal(root->left, order, k1, k2);
    
            if(root->val >= k1 && root->val <= k2) {
                order.push_back(root->val);
            }
            if(root->right != NULL)
                inorderTraversal(root->right, order, k1, k2);
        }
    };
    
  • 相关阅读:
    za
    分享
    git
    javascript总结
    2019年IT行业的前景如何,JAVA和大数据适合女性么?
    java编程培训都学习哪些内容
    python中如何进行json转化
    Java技术分享:搭建Mybatis-generator工程
    2019年Java技术中当前流行的三大框架
    MySQL在阿里云服务器上的在线安装及配置
  • 原文地址:https://www.cnblogs.com/libaoquan/p/6979762.html
Copyright © 2011-2022 走看看