• 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,

  • 相关阅读:
    UVA 10066 The Twin Towers
    UVA 10192 Vacation
    hdu 5018 Revenge of Fibonacci
    hdu 5108 Alexandra and Prime Numbers
    UVA 10252
    UVA 10405最长公共子序列
    数塔
    hdu 2602
    面向对象(五)
    面向对象(三)
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11451776.html
Copyright © 2020-2023  润新知