首页
学习
活动
专区
圈层
工具
发布

计算大O
EN

Stack Overflow用户
提问于 2022-01-05 23:47:44
回答 1查看 78关注 0票数 1

我试图计算这个函数的大O,它是(数据结构)二进制搜索树的镜像。但我不确定计算是否正确。你能解释一下大爆炸会是什么吗?

代码语言:javascript
复制
void mirror(NODE *root){
    if (root) {
        mirror(root->left);
        mirror(root->right);
        NODE *temp = root->left;
        root->left = root-> right;
        root->right  = temp;
    }
    return;
}

我认为它是O(n),因为函数将递归地运行n次,这取决于树中有多少元素。

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 15:45:58

除函数调用之外的所有操作都是固定时间操作:

代码语言:javascript
复制
void mirror(NODE *root) {
    if (root) {                    // O(1)
        mirror(root->left);
        mirror(root->right);
        NODE *temp = root->left;   // O(1)
        root->left = root-> right; // O(1)
        root->right = temp;        // O(1)
    }
    return;                        // O(1)
}

递归调用将访问所有节点一次(深度优先遍历),因此如果表示树中的节点数,则时间复杂度为O()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70600929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档