【发布时间】:2020-06-30 06:08:30
【问题描述】:
我对此的思考过程是这个算法是不正确的。要从大小为 n 的未排序整数数组创建二叉树,首先需要对数组进行排序。我们知道任何基于比较的排序算法都有一个 omega(nlog(n)) 的下限运行时间,因为我们没有比这更好的了。
数组排序后,我们需要一种方法来正确创建 BST。 (按顺序查看键/节点必须以递增/排序的方式)我们查看数组的中间元素并将其作为树的根。然后我们在数组的左半部分递归地执行此操作,构造左子树,并使其成为根的左子树。我们还在数组的右半部分递归地执行此操作,构造右子树,并使其成为根的右子树。由于递归关系,其运行时间为 O(n):T(n) = 2T(n/2) + c。这是在我们上面的排序之后发生的,所以总运行时间是 O(nlog(n) + n) 这只是 O(nlog(n))。这表明我们没有比这更好的方法了。
有什么我可以添加的吗?或者这是否足够?有人有其他建议/想法吗?谢谢。
【问题讨论】:
标签: algorithm runtime binary-search-tree computer-science