题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解析:
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
所以,按照中序遍历顺序找到第k个结点就是结果。
class Solution {
public:
int count_Node = 1;
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot){
TreeNode* node1 = KthNode(pRoot->left, k);
if(node1)return node1;//这句话就是要将pRoot逐层返回
if(count_Node++ == k)return pRoot;
TreeNode* node2 = KthNode(pRoot->right, k);
if(node2)return node2;
}
return NULL;
}