【问题标题】:Time complexity for displaying generic tree and finding total number of nodes in it显示通用树并查找其中节点总数的时间复杂度
【发布时间】:2020-12-07 10:56:18
【问题描述】:

我很难理解显示通用树和查找其中节点总数的时间复杂度。 我在网上找了一些文章,有关于什么是泛型树的文章,但是关于泛型树的时间复杂度的文章并不多。我以前认为查找节点总数将是 O(N),显示所有节点(显示节点的数据)将是 O(N),但是我正在研究通用树的视频上的一条评论说它O(N) 用于显示树的所有节点,O(N^N) 用于查找其中的节点总数,其中“N”是节点总数。有人可以帮帮我吗?

【问题讨论】:

  • 我不明白计数比打印更复杂......
  • 那条评论接错了,N^N 接缝太高了
  • 所以这两种情况的 O(N) 对吗?
  • 这就是我想说的。但是不要去其他网站,说你在 SO 中看到了一条评论,说它是 O(N),因为我不确定

标签: data-structures tree time-complexity


【解决方案1】:

无论您采用深度优先还是广度优先方法,访问有限通用树的所有节点都是 O(N)。所以计算节点的数量也是 O(N),如果计数存储在节点中,也是 O(1)。

仅当打印单个节点是 O(1) 时,打印所有节点是 O(N)。通常情况并非如此。例如,如果树的 N 个节点包含数字 1...N,则打印节点值(二进制或十进制)的复杂度将是 O(N log N)。

【讨论】:

  • 您能否更详细地解释一下打印为 O(N log N) 时的情况?
  • @Lak 一个整数n 写入基数b 的长度为log_b(n),因此打印n 需要O(log n) 时间。打印 1, 2, 3, ..., n 需要 log(1) + log(2) + ... + log(n) = log(n!),也就是 O(n log n)。
猜你喜欢
  • 2016-09-15
  • 2021-07-26
  • 2017-03-22
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
相关资源
最近更新 更多