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

时间:2016-01-23 06:49:42

标签: scheme lisp big-o sicp

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

(define (intersection-tree t1 t2)
    (list->tree (intersection-set (tree->list-2 t1) (tree->list-2 t2))))
  • tree-> list-2将树展平为有序集。需要Theta(N)。
  • intersection-settakes两个集合创建一个具有两个输入集的交集的新集合。需要Theta(N)。
  • list->树将新创建的集合转换为平衡的二进制搜索树。取Theta(N)。

也就是说,我有一个程序调用4个过程,这些过程采用Theta(N)(list-> tree,intersection-set,两个tree->列表)。我的猜测是所有这些需要4N。忽略恒定因子它成为Theta(N)。说交叉树过程需要Theta(N)?

是否正确

1 个答案:

答案 0 :(得分:2)

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