许多树的space要求是什么?

What is the space requirement of many trees?

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

  1. 我正在构建一些完美的二叉树(假设 m)。
  2. 每个叶子索引一个点(即我们保持数据存储和 每棵树都索引存储在那里的点)。

我的想法是space要求是:O(n*d + m),其中n是点的个数,d是点的维度,m是树的个数,我是凭经验说的,不知道是否完全理解!

有人能帮忙吗?


老实说,每片叶子都包含一些点,p,但我认为如果我能得到上面问题的答案,我就能算出结果。

一棵有n个叶子的完美二叉树,节点总数为2n - 1,复杂度为O(n)。更一般地,如果你有一个有n个叶子的完美二叉树的集合,那么节点的总数将为2n - 1。因此,如果n个叶子节点中的每一个存储一个d维点,则总数space 用法是 O(nd).

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

希望对您有所帮助!