zoukankan      html  css  js  c++  java
  • 230. Kth Smallest Element in a BST

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

    Note: 
    You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

    Example 1:

    Input: root = [3,1,4,null,2], k = 1
       3
      / 
     1   4
      
       2
    Output: 1

    Example 2:

    Input: root = [5,3,6,2,4,null,null,1], k = 3
           5
          / 
         3   6
        / 
       2   4
      /
     1
    Output: 3
    

    Follow up:
    What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?

    class Solution {
        public int kthSmallest(TreeNode root, int k) {
            List<Integer> list = new ArrayList();
            help(list, root);
            Collections.sort(list);
            return list.get(k - 1);
        }
        public void help(List<Integer> list, TreeNode root){
            if(root == null) return;
            list.add(root.val);
            help(list, root.left);
            help(list, root.right);
        }
    }

    遍历,存到list,sort,然后get

    public class Solution {
        public int kthSmallest(TreeNode root, int k) {
            Stack<TreeNode> s = new Stack<>();
            TreeNode p = root;
            while (!s.empty() || p != null) {
                if (p != null) {
                    s.push(p);
                    p = p.left;
                } else {
                    p = s.pop();
                    --k;
                    if (k == 0) {
                        return p.val;
                    }
                    p = p.right;
                }
            }
            return -1;
        }
    }

    中序(左根右遍历)存入stack,

  • 相关阅读:
    求js数组中最小值
    分析apply,call方法
    前端模块化详解
    js中形参的小练习
    js中return返回值小练习
    mysql 视图
    mysql 数据库语句
    mysql 事务管理
    vue-前端工程化
    Vue-router
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11451776.html
Copyright © 2011-2022 走看看