c - 在 O(1) 时间内找到 BST 大小 C

标签 c binary-search-tree

我有两个问题。这两个函数当前的运行时间是多少?如果不是 O(1) (对我来说似乎是 O(n)),有人可以给我一个提示(而不是给我答案)如何将其变成 O(1) 吗?谢谢

static int size(NODE *r)
{
    if(r==NULL) 
        return 0;

    return size(r->left) + size(r->right) + 1;
}


int bst_size(BST_PTR t)
{
    return size(t->root);
}

最佳答案

节点可以包含在 BST struct 中,该结构将具有一个在插入/删除时递增和递减的计数器。

关于c - 在 O(1) 时间内找到 BST 大小 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458656/

相关文章:

c - 为什么 C 创建一个空文本文件

c - 如何防止用户输入的错误值存储在变量中?

java - 在java中使用递归方法返回有序字符串?

c - 在 BST insert( ) 中使用 **

c - 变量的指针右对齐,函数的指针左对齐

c - "sorted"的确切含义

c - 给定数组中两个元素之间的最小距离

java - 如何在不使用 Node 类的情况下添加到二叉搜索树

Prolog 二叉搜索树测试 - 不需要的 parent 的父节点比较

c - BST 二叉树删除 C 中值 = 0 的叶子的函数