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

Posted mww-notcopy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆,二叉树,红黑树,B数。相关的知识,希望对你有一定的参考价值。

堆的概念:

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

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

  序列{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数。的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法:树 红黑树

数据结构与算法:树 红黑树

算法红黑树-二叉树-算法

【数据结构】红黑树

数据结构与算法:树 堆排序

二叉树之红黑树(RBTree)