小堆 线索二叉树补充

小堆  线索二叉树补充

1、小堆:

  堆的构造,i>数组直接生成堆(向下调整),iii>插入创建堆(向上调整);

  (1)、怎么实现一次调整?

小堆  线索二叉树补充

  找到最后一个非叶子结点,n/2-1;一直往下调整即可!

  (2)堆排----->优先级队列

  堆的删除,只能是堆顶元素,再拿最后一个元素补充上去。在向下做一次调整。形成新的堆结构(满足堆的性质),将删除的数字输出就是堆排。

  小堆:根(父)小于左右结点;最小的数字先出;

  大堆:根(父)大于左右结点;最大的数字先出;   因而,进行堆排是就是优先级队列!

小堆  线索二叉树补充

2、线索二叉树的查找父结点图形解释

  利用空指针指向前驱、后继结点

小堆  线索二叉树补充

3、编程时const一些注意

  (1)、在C++中,当我们传的是常量时,引用接收时,形参必须const类型接受,否则出错!

  常量必须常引用接受。

例:int find(32);   int find(const int &value);

  (2)、typedef void  *IP;

  const IP m;怎么理解?

因为IP是数据类型,const和数据类型可以互换位置,

  const IP m; <==>  IP const m;  即void *const m; m是一个指针,其指向不能更改,其指向的空间数据可以更改!!!