二叉堆的實現

2021-06-14 00:47:56 字數 1574 閱讀 9012

#include 

#include 

#define max_heap_size 101

class

binaryminheap   

void

insert(

intvalue);  

void

removemin();  

intgetmin();  

void

displayheaparray();  

private

:  int

*heaparray;  

intheapsize;  

intheaparraysize;  

void

siftup(

intnodeindex);  

void

siftdown(

intnodeindex);  

intgetleftchildindex(

intnodeindex)   

intgetrightchildindex(

intnodeindex)   

intgetparentindex(

intnodeindex)   

};  

[cpp]view plain

copy

#include "binaryheap.h"

#include 

binaryminheap::binaryminheap(int

size)   

void

binaryminheap::insert(

intvalue)  else

}  /** non-recursive version

*/void

binaryminheap::siftup(

intnodeindex)  else

}  //  fprintf(stderr, "parent = %d\n", parent);

}  void

binaryminheap::removemin()  else

}  void

binaryminheap::siftdown(

intnodeindex)  else

}  }  void

binaryminheap::displayheaparray()  else

std::cout << "\n--------------------\n"

;  }  

}  int

binaryminheap::getmin()   

main.cpp:

[cpp]view plain

copy

#include "binaryheap.h"

using

namespace

std;  

intmain()  catch

(std::string e)   

return

0;  

}  

二叉堆的實現

1.堆的概念 這裡只需要注意兩點 a.堆的儲存方式 就是順序儲存在陣列中,在二叉樹中表現為滿二叉樹 b.堆的用處 用於排序,查詢最大最小都非常方便 2.堆的實現 heapexception.h ifndef heapexception h define heapexception h class a...

二叉堆的實現

二叉堆是一種特殊的堆,二叉堆是完全二元樹 二叉樹 或者是近似完全二元樹 二叉樹 二叉堆有兩種 最大堆和最小堆。最大堆 父結點的鍵值總是大於或等於任何乙個子結點的鍵值 最小堆 父結點的鍵值總是小於或等於任何乙個子節點的鍵值。二叉堆一般都通過 陣列 來實現。陣列實現的二叉堆,父節點和子節點的位置存在一定...

二叉堆實現二

堆可以視為一棵完全二叉樹,樹的每一層都是被填滿的,最後一層可能除外,所以堆可以用陣列來表示。對於陣列中任意位置 i上的元素,其左兒子在位置 i 2 1 其右兒子在位置 i 2 2 上,其父節點在位置 i 1 2 1處。二叉堆有兩種 最大堆和最小堆。最大堆中,除根結點外 其無父結點 每個結點的關鍵字都...