您的位置:首页 > 其它

230. Kth Smallest Element in a BST

2018-01-24 18:46 232 查看
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?

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

利用中序遍历, 与前面2个题思路一样。

1 class Solution {
2     public int kthSmallest(TreeNode root, int k) {
3         if(root==null) return 0;
4         TreeNode cur = root;
5         Stack<TreeNode> stack = new Stack<TreeNode>();
6         while(cur!=null ||!stack.isEmpty()){
7             while(cur!= null){
8             stack.push(cur);
9             cur = cur.left;
10             }
11             cur = stack.pop();
12             k--;
13             if(k==0) return cur.val;
14             cur = cur.right;
15         }
16         return 0;
17     }
18 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: