题目地址(230. 二叉搜索树中第K小的元素)

Posted 潜行前行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目地址(230. 二叉搜索树中第K小的元素)相关的知识,希望对你有一定的参考价值。

题目地址(230. 二叉搜索树中第K小的元素)

https://leetcode.cn/problems/kth-smallest-element-in-a-bst/

题目描述

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

 

示例 1:

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


示例 2:

输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3


 

 

提示:

树中的节点数为 n 。
1 <= k <= n <= 104
0 <= Node.val <= 104

 

进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

关键点

  • 中序遍历

代码

  • 语言支持:Java

Java Code:


/**
 * Definition for a binary tree node.
 * public class TreeNode 
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() 
 *     TreeNode(int val)  this.val = val; 
 *     TreeNode(int val, TreeNode left, TreeNode right) 
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     
 * 
 */
class Solution 
    int res = -1;
    int n;
    public int kthSmallest(TreeNode root, int k) 
        //中序遍历
        n = k;
        return search(root);
    
    int search(TreeNode root)
        if(root == null) return res;
        res = search(root.left);
        if(res !=-1) return res;
        --n;
        if(n == 0) return root.val;
        res = search(root.right);
        return res;
    


复杂度分析

令 n 为数组长度。

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于题目地址(230. 二叉搜索树中第K小的元素)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode打卡--230. 二叉搜索树中第K小的元素

LeetCode 230. 二叉搜索树中第K小的元素 (平衡树)

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

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

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

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