[Leetcode]Kth Smallest Element in a BST
2015-07-29 03:04
411 查看
//用search计算左子树的节点个数,加上根节点本身若为k则输出,否则
//(1)若k大于目前个数,则k-左子树节点个数,再计算右子树
//(2)若k小于目前个数,则直接计算左子树
/**
* 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 {
private:
int result=0;
int search(TreeNode* root)
{
if(root==NULL)
return 0;
return 1+search(root->left)+search(root->right);
}
public:
int kthSmallest(TreeNode* root, int k) {
int result;
int count=search(root->left)+1;
if(count==k)return root->val;
else if(count>k)kthSmallest(root->left,k);
else if(count<k)kthSmallest(root->right,k-count);
}
};
//(1)若k大于目前个数,则k-左子树节点个数,再计算右子树
//(2)若k小于目前个数,则直接计算左子树
/**
* 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 {
private:
int result=0;
int search(TreeNode* root)
{
if(root==NULL)
return 0;
return 1+search(root->left)+search(root->right);
}
public:
int kthSmallest(TreeNode* root, int k) {
int result;
int count=search(root->left)+1;
if(count==k)return root->val;
else if(count>k)kthSmallest(root->left,k);
else if(count<k)kthSmallest(root->right,k-count);
}
};
相关文章推荐
- 一个题目做了好久,java,想说爱你不容易!
- 手机安全卫士------查询号码归属地
- C. New Year Snowmen --优先队列
- MyGUI 解析
- 封装 链表
- cf 442B Andrey and Problem
- Cocos2d-x中文支持问题的解决办法
- python总结
- python总结
- Android官方命令深入分析之AVD Manager
- Android官方命令深入分析之AVD Manager
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- JAVA中泛型的本质
- 八皇后问题
- 八皇后问题
- MVP设计模式的应用
- Android 官方命令深入分析之android
- Android 官方命令深入分析之android
- ubuntu mysql 无法启动 简单排查
- poj 3254 Corn Fields 【状压 DP 入门】