230. Kth Smallest Element in a BST
2016-09-08 17:30
465 查看
Given a binary search tree, write a function
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).
思路:
二叉搜索树左节点小于根,右节点大于根,使用中序遍历
kthSmallestto find thekth 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).
思路:
二叉搜索树左节点小于根,右节点大于根,使用中序遍历
/** * 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) { Stack<TreeNode> stack = new Stack<>(); TreeNode p = root; while (k > 0 && (p != null || !stack.empty())) { while(p != null){ stack.push(p); p = p.left; } p = stack.peek(); stack.pop(); k--; if(k == 0) return p.val; p = p.right; } return p.val; } }
相关文章推荐
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 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 230. Kth Smallest Element in a BST
- Binary Search:230. Kth Smallest Element in a BST
- 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
- Leetcode 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- Leetcode 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- leetcode_middle_26_230. Kth Smallest Element in a BST
- LeetCode 230. Kth Smallest Element in a BST
- leetcode-java-230. Kth Smallest Element in a BST
- [leetcode] 230. Kth Smallest Element in a BST