最大堆和最小堆是二叉堆的两种形式。
最大堆:根结点的键值是所有堆结点键值中最大者。
最小堆:根结点的键值是所有堆结点键值中最小者。
而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。
最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。
最大堆:根结点的键值是所有堆结点键值中最大者。
最小堆:根结点的键值是所有堆结点键值中最小者。
而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。
最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。
以最大(小)层结点为根结点的子树保有最大(小)堆性质:根结点的键值为该子树结点键值中最大(小)项。
打开IDE
我们来创建一个工程
类声明如下
#if !defined(AFX_MINHEAP_H__5F262696_5BC2_4DC3_BD5A_54F6DEAD15DA__INCLUDED_)
#define AFX_MINHEAP_H__5F262696_5BC2_4DC3_BD5A_54F6DEAD15DA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "stdafx.h"
//最小堆的类定义minheap.h
#define HeapSIZE 10
#define MaxHeapSize 100
class minheap
{private:
ElemType *heapArray;
int m