数据结构和算法|集16

在2009门CS考试中提出了以下问题。

null

1、考虑使用数组实现的二进制最大堆。以下哪个数组表示二进制最大堆? (A) 25,12,16,13,10,8,14 (B) 25,14,13,16,10,8,12 (C) 25,14,16,13,10,8,12 (D) 25,14,12,13,10,8,16

答复(C)

如果树中每个节点的数据都大于或等于其子节点的数据,则树就是最大堆。

在堆树的数组表示中,索引i处的节点的左子节点位于索引2i+1处,右子节点位于索引2i+2处。

           25
        /      
      /          
    14            16
   /             /  
 /             /     
13     10      8       12

2.对上一个问题的正确答案进行两次删除操作后,数组的内容是什么? (A) 14,13,12,10,8 (B) 14,12,13,8,10 (C) 14,13,8,12,10 (D) 14,13,12,8,10

答复(D)

对于堆树,删除节点包括以下两个操作。

1) 用最后一级的最后一个元素替换根。 2) 从根开始,将整棵树从上到下排列。。

让我们逐个删除这两个节点: 1) 删除25项: 用12代替25

          12
        /    
      /       
    14        16
   /          /
 /           /
13     10    8

由于根违反了heap属性(16大于12),所以将16作为树的根。

           16
        /     
      /        
    14         12
   /          /
  /          /
13     10    8

2) 删除16项: 用8代替16

           8
        /    
       /      
    14         12
   / 
  /   
 13     10

从根到底都是健康的。

           14
         /    
       /       
     8         12
    / 
   /   
 13     10
            14
         /     
        /       
     13         12
    / 
   /   
  8    10

3.在快速排序中,为了对n个元素进行排序,使用O(n)时间算法选择第(n/4)个最小元素作为枢轴。快速排序最糟糕的时间复杂度是什么? (A) Θ(n) (B) Θ(n logn) (C) Θ(n^2) (D) Θ(n) 2. 日志(n)

答复(B) 递归表达式变成:

T(n)=T(n/4)+T(3n/4)+cn

求解上述递归后,我们得到Θ(nLogn)。

4.任何具有7个节点的AVL树的最大高度是多少?假设具有单个节点的树的高度为0。 (A) 二, (B) 三, (C) 四, (D) 五,

答复(B) AVL树是具有以下限制的二叉树。 1) 孩子们的身高差异最大为1。 2) 两个孩子都是AVL树

                 a
               /   
             /      
            b        c
          /        /
         /        /
        d     e   g
       /
      /
     h

参考资料: http://en.wikipedia.org/wiki/AVL_tree

如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享