码迷,mamicode.com
首页 > 其他好文 > 详细

230. Kth Smallest Element in a BST

时间:2019-09-03 11:32:27      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:integer   search   pop   class   list   roo   note   nbsp   element   

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

标签:integer   search   pop   class   list   roo   note   nbsp   element   

原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11451776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!