美文网首页
2019-03-26 待提高

2019-03-26 待提高

作者: 骚得过火 | 来源:发表于2019-03-26 21:05 被阅读0次

    1.#### 二叉搜索树中第K小的元素
    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

    说明:
    你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

    示例 1:

    输入: root = [3,1,4,null,2], k = 1
    3
    /
    1 4

    2
    输出: 1
    示例 2:

    输入: root = [5,3,6,2,4,null,null,1], k = 3
    5
    /
    3 6
    /
    2 4
    /
    1
    输出: 3
    进阶:
    如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

    /**
     * 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:
        int kthSmallest(TreeNode* root, int k) {
            
            int num = 0;
            int res ;
            findk( root , k , num , res);
            return res;
        }
        
        void findk(TreeNode* root, int k, int& num , int& res)
        {
            if(root == NULL) return;
            
            findk(root->left,k,num,res);
            
            num++;
            if(num == k ) res = root->val;
            
            findk(root->right,k,num,res);
            
            return;
            
        }
    };
    

    相关文章

      网友评论

          本文标题:2019-03-26 待提高

          本文链接:https://www.haomeiwen.com/subject/gpfovqtx.html