# LeetCode:Kth Smallest Element in a BST

719人阅读 评论(1)

### Kth Smallest Element in a BST

Total Accepted: 49142 Total Submissions: 128501 Difficulty: Medium

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.

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?

Hint:

1. Try to utilize the property of a BST.
2. What if you could modify the BST node's structure?
3. The optimal runtime complexity is O(height of BST).

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

java code:

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int kthSmallest(TreeNode root, int k) {

int count = countNode(root.left);

if(k == count + 1)
return root.val;
else if(k < count + 1)
return kthSmallest(root.left, k);
else // k > count + 1
return kthSmallest(root.right, k - count - 1);

}

// 自定义函数:计算树中结点个数
int countNode(TreeNode root) {
if(root == null) return 0;

return countNode(root.left) + countNode(root.right) + 1;
}

}

0
0

个人资料
• 访问：389687次
• 积分：6783
• 等级：
• 排名：第4134名
• 原创：321篇
• 转载：1篇
• 译文：0篇
• 评论：34条
博客专栏
 FFmpeg4Android 文章：7篇 阅读：814
 LeetCode解题记录 文章：215篇 阅读：275327
 Java源码解析 文章：12篇 阅读：12926
阅读排行
最新评论
个人收藏
友情链接