通过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中,然后再查找;

最新文章

  1. 前端开发---ppt展示页面评论区支持动态交互效果
  2. 【转】微信小程序给程序员带来的可能是一个赚钱的机遇
  3. 移动端页面去掉click点击 背景色变化
  4. RunTime的简单使用
  5. Convert XML to Object using LINQ
  6. MATLAB仿真总结
  7. ASP.NET MVC5 第4章
  8. spring分布式事务学习笔记
  9. PHP面向对象编程简单实例
  10. struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
  11. Effective Java 第三版——10. 重写equals方法时遵守通用约定
  12. 鸟哥的Linux私房菜笔记第四章
  13. Vue.js实现登录功能
  14. [数据结构] P2.3 Trie树
  15. DELPHI中完成端口(IOCP)的简单分析(4)
  16. C++函数模版的简单使用
  17. jQuery的效果(动画)
  18. 201621123008 《Java 程序设计》 第九周学习总结
  19. 老菜鸟致青春,程序员应该选择java 还是 c#-
  20. iOS开发--画一条黑色的横线

热门文章

  1. spring-boot 启动图标修改-启动彩蛋
  2. SuperMap-WMTS服务修改切片集顺序
  3. ffmpeg3.3.2命令行参数笔记
  4. ctfd搭建
  5. Dubbo 03 Restful风格的API
  6. Java语言基础(3)
  7. The Multilinear Structure of ReLU Networks
  8. 【hdu 6089】Rikka with Terrorist
  9. HDU 多校第四场题解
  10. 第一次把本地项目与git相连