描述:
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。
示例1
输入:
{5,3,7,2,4,6,8},3
返回值:
{4}
说明:
按结点数值大小顺序第三小结点的值为4
(题目来自牛客网)
用C++实现如下
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{ //此函数用于返回第k个节点
//给定一棵二叉搜索树,请找出其中的第k个结点。
// //思路1,死磕递归法(此题目思路采用的是中序遍历二叉树);思路2,使用栈来模拟递归流程
// if(pRoot==nullptr)
// return nullptr;
// int node_count = nodeCount(pRoot->left); //计算左子树及底层有多少个节点
// if(k <= node_count) //此条件,第k个节点在左子树中
// return KthNode(pRoot->left, k); //递归函数左子树节点求解
// if(k =