码迷,mamicode.com
首页 > 其他好文 > 详细

堆,二叉树,红黑树,B数。

时间:2020-02-26 22:57:42      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:完全   mamicode   中序   大于   完成   中序遍历   custom   code   红黑树   

堆的概念:

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

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

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

  65,12,30,50,9,19,20,4,,17,60
  65,12,30,9,50,19,4,20,17,60
  65,9,30,12,19,50,4,20,17,60
  65,12,9,30,50,4,20,9,17,60

一、序列构造成堆:

1:1~9都是,从上到下,从左到右堆积

技术图片

2

技术图片

3

技术图片

4

 技术图片

5

技术图片

6

 技术图片

7

 技术图片

8

 技术图片

9

 技术图片

10:10中可知,4<30,所以调换位置得到11;

技术图片

11

技术图片

12:12中可知,4<12,所以调换位置得到13;

 技术图片 

13

技术图片

14:14中可知,4< 9,所以调换位置得到15,

 技术图片

15:15中加入序列【19】得到16,

 技术图片

16

 技术图片

17:17中可知,19< 50,所以调换位置得到18,

技术图片

18

 技术图片

 上图小顶堆,

  1~9都是,从上到下,从左到右堆积,

  10中可知,4<30,所以调换位置得到11;

  12中可知,4<12,所以调换位置得到13;

  14中可知,4< 9,所以调换位置得到15,

  此时堆稳定,从上到下,从左到右堆积;

  15中加入序列【19】得到16,

  17中可知,19< 50,所以调换位置得到18,

  完成了上述序列的堆的构造。

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

  中序遍历:左中右

  对18进行中序遍历

  1、访问 4 的 左结点 9

  技术图片

   2、访问 9 的 左结点 12

     技术图片

  3、访问 12 的 左结点 65,因为 65 没有 左结点,所以取中序遍历的第一个值 65

    当前序列:65

      技术图片

  4、下图 矩形柱 65(左),下一步 12(中)

    当前序列:65,12

      技术图片

  5、下图 矩形柱 65(左), 12(中),下一步 30(右)

    当前序列:65,12,30

       技术图片

  6、下图 矩形柱 12(左), 下一步 9(中)

    当前序列:65,12,30,9

      技术图片

  6、下图 矩形柱 12(左),  9(中),下一步 19(右)但是19有 左结点,

    当前序列:65,12,30,9

      技术图片

   7、下图 矩形柱 50(左),且50有 无 左结点,

    当前序列:65,12,30,9,50

       技术图片

   8、当前序列:65,12,30,9,50,19

   9、当前序列:65,12,30,9,50,19,4

   10、当前序列:65,12,30,9,50,19,4,20

   11、当前序列:65,12,30,9,50,19,4,20,17

   12、当前序列:65,12,30,9,50,19,4,20,17,60

 

堆,二叉树,红黑树,B数。

标签:完全   mamicode   中序   大于   完成   中序遍历   custom   code   红黑树   

原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12357402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!