查找调用许多过程的过程的增长顺序



此代码创建一个平衡的二叉搜索树,它是两个平衡二叉搜索树的交集。

(define (intersection-tree t1 t2)
    (list->tree (intersection-set (tree->list-2 t1) (tree->list-2 t2))))
  • tree->list-2 将树展平为有序集。它需要Theta(N)。
  • 交集
  • 采用两个集合,并创建一个具有两个输入集的交集的新集。它需要Theta(N)。
  • 列表>树将新创建的集合转换为平衡的二叉搜索树。取θ(N)。

也就是说,我有一个过程调用 4 个过程,它采用 Theta(N)(列表>树、交集集、两个树>列表)。我的猜测是所有这些都需要4N。忽略常数因子,它变成Theta(N)。说交集树过程需要 Theta(N) 是否正确?

你的猜测是正确的,因为在你的函数中,每个子任务只执行一次,使用 Theta(N),次数恒定,交集树过程采用 Theta(N)。

最新更新