题目
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思路
- 二叉搜索树的中序遍历是升序的,要找到第k个结点,就中序遍历到第k个结点就行了。
代码
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
int cnt;
TreeNode* res;
public:
TreeNode* KthNode( TreeNode* pRoot, int k )
{
cnt = 0;
res = nullptr;
helper( pRoot, k );
return res;
}
void helper( TreeNode* node, int& k ) {
if ( node == nullptr ) return;
helper( node->left, k );
cnt += 1;
if ( cnt == k ) {
res = node;
return;
}
helper( node->right, k );
return;
}
};
来源:CSDN
作者:PandaDou
链接:https://blog.csdn.net/m0_37822685/article/details/104308998