Leetcode#230. 二叉搜索树中第K小的元素

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_20177327/article/details/82086053

解题思路:

  • 二叉搜索树的中序遍历是递增的;
  • 遍历后的第k个元素即为第k小;
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void inorderTraversal(TreeNode* root, vector<int>& v)
    {
        if(root == NULL)
            return;
        inorderTraversal(root->left, v);
        v.push_back(root->val);
        inorderTraversal(root->right, v);
    }

    int kthSmallest(TreeNode* root, int k) 
    {
        vector<int> ret;
        inorderTraversal(root, ret);
        return ret[k - 1];
    }
};

猜你喜欢

转载自blog.csdn.net/sinat_20177327/article/details/82086053