54剑指OFFER之二叉搜索树第K个节点(未解决)

参考资料:

[1]见剑指OFFER课本

关键词:
思路:

中序遍历第K个节点,注意变化的地方

测试用例:
自己的解答:
BinaryTreeNode* FindKthNodeCore(BinaryTreeNode* pRoot, int& nK)
{
    if (pRoot == nullptr || nK <= 0)
        return nullptr;
    //先遍历左子树
    //再遍历根节点
    //再遍历右子树

    BinaryTreeNode* pTarget;

    pTarget= FindKthNodeCore(pRoot->m_pLeft,nK);

    if (nK == 1)
    {
        pTarget = pRoot;
    }
    nK--;

    //如果找到了,就不找了
    if (nK >= 1)
    {
        pTarget = FindKthNodeCore(pRoot->m_pRight,nK);
    }

    return pTarget;
}



//返回二叉搜索树的第K个节点
BinaryTreeNode* FindKthNode(BinaryTreeNode* pRoot,int nK)
{
    if (pRoot == nullptr || nK <= 0)
        return nullptr;

    return FindKthNodeCore(pRoot,nK);
}

你可能感兴趣的:(54剑指OFFER之二叉搜索树第K个节点(未解决))