一行短路求值搞定中序遍历递归函数,同时完成判断是否是第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; } };