【LeetCode】230. Kth Smallest Element in a BST
来源:互联网 发布:windows开启远程桌面 编辑:程序博客网 时间:2024/06/16 00:16
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).
class Solution {public: int kthSmallest(TreeNode* root, int k) { stack<TreeNode*> stack; TreeNode * p=root; int result; int count=k; while((!stack.empty() || p!=NULL)){ if(p!=NULL){ stack.push(p); p=p->left; }else{ count--; if(count==0){ break; } p=stack.top(); stack.pop(); p=p->right; } } result =stack.top()->val; return result; }};
这题我的做法其实就是为了中序遍历加了一个计数器。然后就能记录下来BST中的元素大小了。
但是这题的思考部分是要为结点添加子树的大小这个数据。
感觉和非递归遍历BST比谁快?
虽然如果事先就有子树的大小的话确实是O(树高)
0 0
- #leetcode#Kth Smallest Element in a BST
- leetcode--Kth Smallest Element in a BST
- Leetcode|Kth Smallest Element in a BST
- [leetcode] Kth Smallest Element in a BST
- 【LeetCode】Kth Smallest Element in a BST
- LeetCode Kth Smallest Element in a BST
- 【leetcode】Kth Smallest Element in a BST
- LeetCode Kth Smallest Element in a BST
- leetcode: Kth Smallest Element in a BST
- Leetcode: Kth Smallest Element in a BST
- [LeetCode] Kth Smallest Element in a BST
- [LeetCode]Kth Smallest Element in a BST
- [Leetcode]Kth Smallest Element in a BST
- leetcode--Kth Smallest Element in a BST
- 【leetcode】Kth Smallest Element in a BST
- [leetcode] Kth Smallest Element in a BST
- [Leetcode]Kth Smallest Element in a BST
- Leetcode: Kth Smallest Element in a BST
- 递归的logN的优化(菲波那契数列,青蛙上台阶问题,母牛问题)!!!!
- webview支持特效,页面内跳转
- neural-networks-and-deep-learning network3.py
- 性格不好,其实就是情商不够
- java jsp与jquery easyui整合代码下载,有n个demo教程
- 【LeetCode】230. Kth Smallest Element in a BST
- C语言 数组VS指针
- Android动画之逐帧动画
- 【阿里在线技术峰会】罗龙九:云数据库十大经典案例分析
- jsp学习(三)
- Android学习路线图
- Android Selector使用案例
- 解除springmvc限制参数对象映射个数不能超过256个
- Linux C多线程编程注意事项及数据处理