一行短路求值搞定中序遍历递归函数,同时完成判断是否是第k小,以及当碰到第k小结点时保存该结点的指针的功能。

class Solution {
public:
    int i=0;
    TreeNode* ret=nullptr;
    bool inorder(TreeNode* pRoot, int k)
    {
        return ((pRoot->left && inorder(pRoot->left, k)) ||
               (++i==k && (ret=pRoot))||
               (pRoot->right && inorder(pRoot->right, k))) ;
    }

    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if (!pRoot) return nullptr;
        inorder(pRoot, k);
        return ret;
    }
};