230. Kth Smallest Element in a BST
2017-02-26 19:50
253 查看
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?
Hint:
Try to utilize the property of a BST.
What if you could modify the BST node’s structure?
The optimal runtime complexity is O(height of BST).
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?
Hint:
Try to utilize the property of a BST.
What if you could modify the BST node’s structure?
The optimal runtime complexity is O(height of BST).
/** * 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) { if (root == null) return 0; int cnt = cntNode(root.left); if (k > cnt+1) return kthSmallest(root.right, k-cnt-1); else if (k <= cnt) return kthSmallest(root.left, k); return root.val; } public int cntNode(TreeNode root) { if (root == null) return 0; return 1 + cntNode(root.left) + cntNode(root.right); } }
相关文章推荐
- 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
- leetcode No230. Kth Smallest Element in a BST
- leetcode 230. Kth Smallest Element in a BST
- [LeetCode] 230. Kth Smallest Element in a BST 二叉搜索树中的第K小的元素
- 230. Kth Smallest Element in a BST
- LeetCode 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- leetcode 230. Kth Smallest Element in a BST
- 【LectCode】230. Kth Smallest Element in a BST
- [LeetCode]230. Kth Smallest Element in a BST
- 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(Java)
- [leetcode] 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST