题目描述
给定一棵二叉搜索树,请找出其中的第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) {
}
};
*/
//递归1
class Solution {
public:
int index = 0;
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot!=NULL){
TreeNode* node = KthNode(pRoot->left,k);
if(node!=NULL)
return node;
index++;
if(index==k)
return pRoot;
node = KthNode(pRoot->right,k);
if(node!=NULL)
return node;
}
return NULL;
}