使用将新值Tree-Insert(T, v)
插入二叉搜索树v
的算法T
,以下算法通过在给定部分中重复插入每个值来生成二叉搜索树。树中的数组:
Tree-Grow(A, first, last, T)
1 for i ← first to last
2 do Tree-Insert(T, A[i])
如果树最初是空的,并且数组部分的长度(即,last-first + 1)是n,那么上述算法的最佳情况和最差情况的渐近运行时间是多少,分别?
当n = 7时,给出最佳案例实例(作为包含数字1到7的数组,按特定顺序),以及算法的最坏情况实例(以相同形式)。
如果数组已排序且所有值都不同,请找到修改Tree-Grow的方法,以便始终构建最短的树。
修改算法的最佳情况和最坏情况渐近运行时间分别是什么?
答案 0 :(得分:0)
请使用homework
标记标记作业问题。为了做好期末考试,我建议你真正学习这些东西,但我不是来判断你的。
1)从第一个到最后一个迭代需要O(n)。它需要O(lg n)插入到二叉树中,因此在最佳情况下,您显示的算法采用O(n lg n)。
插入二叉树的最坏情况是树很长,但不是很浓密;类似于链表。在这种情况下,需要插入O(n),因此在最坏的情况下需要O(n ^ 2)。
2)最佳案例:[4,2,6,1,3,5,7],最坏情况:[1,2,3,4,5,6,7]
3)使用n / 2索引作为根,然后以递归方式对数组的左侧和右侧执行此操作。
4)O(n lg n)在最好和最坏的情况下。
我希望这会有所帮助。