题解 | 二叉搜索树中第K小的元素

alt

题干分析

题设给定一颗二叉搜索树,要求我们找到所有节点中第k小的节点值。

算法思路

依照二叉搜索树的定义,其中序遍历结果即为所有节点值按从小到大排列得到的数组。得到该数组后返回其第k个元素即可。

实现代码

class Solution {
    void dfs(TreeNode *cur, vector<int> &order) {
        if (cur) {
            dfs(cur->left, order);
            order.push_back(cur->val);
            dfs(cur->right, order);
        }
    }
public:
    int kthSmallest(TreeNode* root, int k) {
        vector<int> order;
        dfs(root, order);
        return order[k - 1];
    }
};

复杂度分析

  • 时间复杂度:每个节点都需要访问一次,时间复杂度为
  • 空间复杂度:需要暂存中序遍历结果,空间复杂度为,递归最深为n层,空间复杂度仍为
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务