题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路:
对于二叉搜索树,中序遍历即使从小到大的排序,同时用一个变量记录,当遍历到第k个的时候就返回。
class Solution {
public:
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;
}
private:
int index = 0;
};