[LeetCode]230. Kth Smallest Element in a BST

来源:互联网 发布:时尚杂志知乎 编辑:程序博客网 时间:2024/06/03 23:48

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.

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

这道题其实就是问的中序遍历,因为是BST,所以左节点一定小于根节点,那么我们只需要按照先左,再中后右的次序把二叉树里的值一个个输出放到arraylist中,最后返回那个K就可以

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    private void addNode(TreeNode root,ArrayList<Integer> res){        if(root==null){            return;        }        addNode(root.left,res);        res.add(root.val);        addNode(root.right,res);    }    public int kthSmallest(TreeNode root, int k) {        if(root==null){            return k;        }        ArrayList<Integer> res = new ArrayList<Integer>();        addNode(root,res);        return res.get(k-1);    }}


0 0
原创粉丝点击