统计一个数字在升序数组中出现的次数。

解题思路

  • 中序遍历递归查找到第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;
}

相关文章:

  • 2022-01-17
  • 2021-11-24
  • 2022-12-23
  • 2021-04-26
  • 2021-05-13
  • 2021-10-12
  • 2021-09-08
猜你喜欢
  • 2021-11-21
  • 2021-07-08
  • 2022-12-23
  • 2021-11-19
  • 2021-06-11
  • 2022-12-23
相关资源
相似解决方案