Почему несколько функций используют меньше памяти, чем одна большая функция с несколькими переменными - PullRequest
2 голосов
/ 11 июля 2020

Я выполнял задание Leetcode, и мой код использовал примерно 0,5 КБ памяти больше, чем другие материалы, которые выглядели более сложными. Сама задача заключалась в инвертировании двоичного дерева. Хотя я отправлял свое решение несколько раз, чтобы получить средние значения времени выполнения и использования памяти для моего кода. Мой код ниже работает в среднем в течение 3 мс и занимает 8,5 кб памяти после 10 пробных отправок. 1004 *

class Solution {
public:
    void invert(TreeNode* root)
    {
        if(root==nullptr)
            return;
        invert(root->left);
        invert(root->right);
        TreeNode* temp = root->right;
        root->right = root->left;
        root->left = temp;
    }
    TreeNode* invertTree(TreeNode* root) {
        if(root==nullptr)
            return nullptr;
        invert(root);
        return root;
    }
};

Мне интересно, как данный код использует две функции и использует меньше памяти, чем мое решение? Кроме того, я относительно новичок в программировании, и мне интересно, является ли этот случай образцом более глубокого механизма c в языке C ++ или слишком придирчивым, чтобы вызывать какие-либо опасения. Спасибо за чтение

...