スタックの概念:グラフのスタック構造がツリーでは、実装するために使用される「プライオリティキューを。」
1.まず、ヒープを作成します。
特性のヒープ:
(1).完全二叉树;
(2)各ノードは、左と右の子ノードよりも大きくなっています。
(3)最大ルート(杭)。
(4)左の子ノード2I + 1を、子供は2I + 2、親ノード(I-1)/ 2ノード.;
パッケージメイン インポート"FMT" FUNCのparentNode(iは整数)、INT { リターン(I - 1)/ 2 } //左节点 FUNC leftNode(iは整数)、INT { リターン2 * I + 1 } //右节点 FUNC rightNode(I INT)INT { リターン2 * I + 2 } //创建ヒープ buildHeap(ヒープ[] INT){FUNC 長さ:= LEN(ヒープ) 用I:=長さ/ 2から1。I> = 0; i-- { maxHeap(ヒープ、I、長さ) } } FUNC maxHeap(ヒープ[] intは、iは、長INTをINT){ 左:= leftNode(I) 右:= rightNode(I) 最大:= 0 左場合<長&&ヒープ[左]>ヒープ[I] { 最大=左 }他{ 最大I = } 右<長&&ヒープ[右]>ヒープ[最大] {もし 最大=右 } 最大場合!= I { ヒープ[i]は、ヒープ[最大] =ヒープ[最大]、ヒープ[I] //需要继续比较其父节点 maxHeap(ヒープ、最大長さ) } } メインFUNC(){ = [] INT {1、24、35、343、463、46、34、35、12、123、245、413、5、 132} buildHeap(A) fmt.Println(A) }