leetcode 230二叉搜索树中第k小的元素
2024-10-07 03:34:22
通过stack进行中序遍历迭代,timeO(k),spaceO(1)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
/**
BST中序遍历是从小到大排列的因此对其进行中序遍历然后取第k个元素;
**/
class Solution {
public:
int kthSmallest(TreeNode* root, int k) {
if(root==NULL) return ;
int res=,i=;
stack<TreeNode*> s;
TreeNode* p=root;
s.push(root);
while(!s.empty()){
while(p&&p->left){
p=p->left;s.push(p);
}
p=s.top();s.pop();
if(i==k) {res=p->val;break;}
i++; p=p->right;
if(p) s.push(p);
}
return res;
}
};
改进的话则建立一个private vector<int> arr,当k<arr.size()的时候第k大的元素已经存在,当k>arr.size()时不存在,需要继续执行搜索;或者先全部遍历一遍存储到arr中,然后再查找;
最新文章
- 前端开发---ppt展示页面评论区支持动态交互效果
- 【转】微信小程序给程序员带来的可能是一个赚钱的机遇
- 移动端页面去掉click点击 背景色变化
- RunTime的简单使用
- Convert XML to Object using LINQ
- MATLAB仿真总结
- ASP.NET MVC5 第4章
- spring分布式事务学习笔记
- PHP面向对象编程简单实例
- struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
- Effective Java 第三版——10. 重写equals方法时遵守通用约定
- 鸟哥的Linux私房菜笔记第四章
- Vue.js实现登录功能
- [数据结构] P2.3 Trie树
- DELPHI中完成端口(IOCP)的简单分析(4)
- C++函数模版的简单使用
- jQuery的效果(动画)
- 201621123008 《Java 程序设计》 第九周学习总结
- 老菜鸟致青春,程序员应该选择java 还是 c#-
- iOS开发--画一条黑色的横线