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.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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?

题目大意:

寻找BST中第k小的数字。

解法:

其实就是按中序遍历到的第k个节点。

java:

class Solution {
    int re=0,count=0;
    private void dfs(TreeNode root,int k){
        if(root==null) return;
        dfs(root.left,k);
        count++;
        if(k==count) {
            re=root.val;
            return;
        }
        dfs(root.right,k);
    }

    public int kthSmallest(TreeNode root, int k) {
        dfs(root,k);
        return re;
    }
}

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄