统计一个数字在升序数组中出现的次数。
解题思路
- 中序遍历递归查找到第k个
- 还可以通过非递归的中序遍历法找到第k个
上代码(C++很香)
法一:递归中序遍历
TreeNode* ans = nullptr;
int countK = 0;
// 中序遍历
void middleDFS(TreeNode* pRoot, int k){
if(pRoot == nullptr)
return ;
middleDFS(pRoot->left, k);
if(++countK == k){
ans = pRoot;
return ;
}
middleDFS(pRoot->right, k);
}
TreeNode* KthNode(TreeNode* pRoot, int k){
if(pRoot == nullptr || k == 0)
return nullptr;
middleDFS(pRoot, k);
return ans;
}