230. Kth Smallest Element in a BST

Posted wentiliangkaihua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,

以上是关于230. Kth Smallest Element in a BST的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 230. Kth Smallest Element in a BST

Leetcode 230. Kth Smallest Element in a BST

230. Kth Smallest Element in a BST

230.Kth Smallest Element in a BST

230. Kth Smallest Element in a BST

230.Kth Smallest Element in a BST