堆(大顶堆,小顶堆),中序遍历,前序遍历,后续遍历序列

堆的概念:

  • 堆中某个节点的值总是不大于或不小于其父节点的值;
  • 堆总是一棵完全二叉树。

以百度的一个面试题为例:

  序列{9,12,17,30,50,20,60,65,4,19}构造为堆后,堆所对应的的中序遍历序列可能为

  A、65,12,30,50,9,19,20,4,,17,60
  B、65,12,30,9,50,19,4,20,17,60
  C、65,9,30,12,19,50,4,20,17,60
  D、65,12,9,30,50,4,20,9,17,60

一、序列构造成堆:

  堆构造原则:先固定已稳定的堆,再 安照从上到下,从左到右的原则堆积。

  小顶堆原理:每个结点的值都小于其左孩子和右孩子结点的值

                                          

 

 

                           

 

                            

 

 

              

 

             

 

              

 

         

 

  小顶堆映射的数组为 

大顶堆

  原理与小顶堆相似:每个结点的值都大于其左孩子和右孩子结点的值

        

 

  大顶堆映射的数组为 

 

  注:蓝色为稳定状态,橙色为新增未确定状态,红色为要调整状态

二、堆所对应的的中序遍历序列

   中序遍历:左中右     对构造成功的 小顶堆

       

              

 

 

 

        

 

        

 

      

 

    

 

       

 

 中序遍历遍历结果:

 答案选: B

先序遍历遍历结果:

后序遍历遍历结果:

 

posted @ 2020-02-26 22:04  NOT_COPY  阅读(4847)  评论(0编辑  收藏  举报