Kth Smallest Element in a BST
class Solution { public: int kthSmallest(TreeNode* root, int k) { int num = 0; TreeNode*pNode=NULL; visit(root, k, num, pNode); return pNode->val; } private: void visit(TreeNode *root, int k, int &num, TreeNode*&pNode) { if (root == NULL) { return; } visit(root->left, k, num, pNode); if (++num == k) { pNode=root; return; } visit(root->right, k, num, pNode); } };
此类方法遍历的时候,不要用返回值表示,如果有返回值,那么我们遍历到NULL时候,我们需要回退。此时如果带返回值,那么导致结果错误。
(只能使用不带返回值的void,这样我们才能回到上一层,且能继续执行下面的代码,否则我们将直接终止程序)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步