LeetCode---Kth Smallest Element in a BST
2015-11-03 10:41
197 查看
题目大意:给出一颗二叉搜索树,找出其中第K小的数。
算法思想:
由二叉搜索树和中序遍历的性质可知,中序遍历二叉搜索树的结果是从小到大递增的序列,从而只需找到中序遍历的过程中的第K个节点即可。
中序遍历算法:
对于任意节点P,只要P不空则将其入栈,并指向其左孩子节点,直至P为空,然后取栈顶顶元素并出栈,然后对其右子树做上述同样的操作。按此过程重复直到栈为空为止。
代码如下:
算法思想:
由二叉搜索树和中序遍历的性质可知,中序遍历二叉搜索树的结果是从小到大递增的序列,从而只需找到中序遍历的过程中的第K个节点即可。
中序遍历算法:
对于任意节点P,只要P不空则将其入栈,并指向其左孩子节点,直至P为空,然后取栈顶顶元素并出栈,然后对其右子树做上述同样的操作。按此过程重复直到栈为空为止。
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int kthSmallest(TreeNode* root, int k) { int res=0,num=0; if(root==NULL) return 0; TreeNode* p=root; stack<TreeNode*> S; while(p!=NULL||!S.empty()){ while(p!=NULL){ S.push(p); p=p->left; } if(!S.empty()){ p=S.top(); ++num; if(num==k) { res=p->val; break; } S.pop(); p=p->right; } } return res; } };
相关文章推荐
- SQL Server 损坏修复 之三 不同部位损坏的应对
- 一个好用的rest 请求工具包
- 事件选择 - WSAEventSelect
- 如何彻底删除SVN中的文件和文件夹(附恢复方法)
- HDU 1574 RP问题(DP)
- JavaScript
- Keepalived+Haproxy实现高可用负载均衡
- ios开发遇到的44高度,和64 高度问题
- 【转】tcp 出现rst情况整理
- 关于困觉
- C# 拷贝文件到另一个目录
- js颜色选择器修改版(兼容firefox,chrome)
- 自定义控件之时钟
- 字符串转化为可执行的方法
- AngularJS 模块& 表单
- Linux开机自动挂载(磁盘)
- heartbeat 部署
- Android开发之Eclipse中使用git简单步骤
- 域名申请-企业网站创建-后期维护,个人全程为您定制服务
- css 清除浮动