题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路:
将书中的结点按照中序遍历的方法存入到数组中,然后返回数组的第k-1个结点
//中序遍历
void in_order(TreeNode* root,vector<TreeNode*> &v){
if(root != NULL){
in_order(root->left,v);
v.push_back(root);
in_order(root->right,v);
}
}
//二叉搜索树的第k个结点
TreeNode* KthNode(TreeNode* pRoot, int k){
if(pRoot == NULL || k <= 0){
return NULL;
}
vector<TreeNode*> v;
in_order(pRoot,v);
if(v.size() < k){
return NULL;
}
return v[k-1];
}