在二叉搜索树中插入新值

时间:2010-03-02 23:16:12

标签: algorithm arrays data-structures binary-tree performance

使用将新值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])

  1. 如果树最初是空的,并且数组部分的长度(即,last-first + 1)是n,那么上述算法的最佳情况和最差情况的渐近运行时间是多少,分别?

  2. 当n = 7时,给出最佳案例实例(作为包含数字1到7的数组,按特定顺序),以及算法的最坏情况实例(以相同形式)。

  3. 如果数组已排序且所有值都不同,请找到修改Tree-Grow的方法,以便始终构建最短的树。

  4. 修改算法的最佳情况和最坏情况渐近运行时间分别是什么?

1 个答案:

答案 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)在最好和最坏的情况下。

我希望这会有所帮助。