题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路:
我们知道二叉搜索树的中序遍历就是排序好的数列。所以我们只需中序遍历到第k个,我们就认为得到答案了。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
TreeNode *ret;
int m;
void dfs(TreeNode * root){
if(root==NULL )return;
dfs(root->left);
m--;
if(m == 0){
ret = root;
}
dfs(root->right);
}
TreeNode* KthNode(TreeNode* pRoot, int k)
{
ret = NULL;
m = k;
dfs(pRoot);
return ret;
}
};
标签:TreeNode,offer,int,dfs,二叉,搜索,ret,NULL,root From: https://blog.51cto.com/u_15910522/5931552