Data structures 许多树木的空间要求是什么?

Data structures 许多树木的空间要求是什么?,data-structures,tree,binary-tree,complexity-theory,space-complexity,Data Structures,Tree,Binary Tree,Complexity Theory,Space Complexity,有人问我项目的空间要求,我不确定答案,所以我在这里问。以下是我的工作: 我正在构建一些完美的二叉树(比如说m) 每个叶索引一个点(即,我们保存数据并 每棵树都为存储在那里的点编制索引) 我的想法是,空间要求是:O(n*d+m),其中n是点数,d是点的维数,m是树的数目,但我是根据经验告诉你的,不确定我是否完全理解它 有人能帮忙吗 老实说,每个叶子都包含许多点,p,但我想如果我能回答我上面的问题,我就能得出结果。在一个有n片叶子的完美二叉树中,节点总数是2n-1,也就是O(n)。更一般地说,如果

有人问我项目的空间要求,我不确定答案,所以我在这里问。以下是我的工作:

  • 我正在构建一些完美的二叉树(比如说
    m
  • 每个叶索引一个点(即,我们保存数据并 每棵树都为存储在那里的点编制索引)
  • 我的想法是,空间要求是:
    O(n*d+m)
    ,其中
    n
    是点数,
    d
    是点的维数,
    m
    是树的数目,但我是根据经验告诉你的,不确定我是否完全理解它

    有人能帮忙吗



    老实说,每个叶子都包含许多点,
    p
    ,但我想如果我能回答我上面的问题,我就能得出结果。

    在一个有n片叶子的完美二叉树中,节点总数是2n-1,也就是O(n)。更一般地说,如果您有一个具有n个总叶子的完美二叉树集合,那么节点的总数将是2n-1。因此,如果n个叶节点中的每一个存储d维点,则总空间使用量为O(nd)

    这里的树数m实际上不需要在big-O空间分析中显示。这样想:如果你有m棵树,假设每棵树都是非空的,那么你必须至少有n个叶节点(每棵树至少有一个),所以我们知道m=O(n)。因此,即使将每棵树的空间开销计算为O(m),O(nd+m)的总空间使用量也相当于O(nd)


    希望这有帮助

    是的,这很有帮助,但我还有一个问题。您会说:“因此,如果n个叶节点中的每个都存储了一个d维点,则总空间使用量为O(nd)”。事实并非如此。也许,我不清楚,对不起。假设我们有5棵树。我们不是让每棵树都在里面存储实际点,而是维护一个向量(对每棵树都可见)来存储实际点。然后,每棵树的每一片叶子都存储了将存储在那里的点的索引。希望现在更清楚了。这会改变结果O(nd)吗?哦,是的,你们的答案已经很有用了。@gsamaras渐近地,这不会改变任何事情。假设每个叶只存储索引。如果该向量中有n个条目,则有O(n)个树节点和用于存储这些点的O(nd)空间,因此总空间使用量将为O(n+nd)=O(nd)。