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