zoukankan      html  css  js  c++  java
  • 230. 二叉搜索树中第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 函数?

    class Solution {
        private int cnt = 0;
        private TreeNode res;
        public int kthSmallest(TreeNode root, int k) {
            findK(root,k);
            return res.val;
        }
        private void findK(TreeNode root, int k){
            if(root == null || cnt >= k) return;
            findK(root.left,k);
            cnt++;
            if(cnt == k) res = root;
            findK(root.right,k);
        }
    }
    执行用时 : 1 ms, 在Kth Smallest Element in a BST的Java提交中击败了90.49%的用户
    内存消耗 : 41.5 MB, 在Kth Smallest Element in a BST的Java提交中击败了0.52% 的用户
  • 相关阅读:
    Oracle(二)常用操作语句
    Oracle(一)概念理解
    Spring MVC实现文件上传和下载
    Spring MVC 的执行流程
    Spring MVC原理及配置详解
    idea创建maven web项目
    Spring Bean的生命周期
    integer和int的区别
    web项目搜索框智能提示
    html-tab page
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10509971.html
Copyright © 2011-2022 走看看