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% 的用户
  • 相关阅读:
    uva 11294 Wedding
    uvalive 4452 The Ministers’ Major Mess
    uvalive 3211 Now Or Later
    uvalive 3713 Astronauts
    uvalive 4288 Cat Vs. Dog
    uvalive 3276 The Great Wall Game
    uva 1411 Ants
    uva 11383 Golden Tiger Claw
    uva 11419 SAM I AM
    uvalive 3415 Guardian Of Decency
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10509971.html
Copyright © 2011-2022 走看看