7-9 堆中的路徑 (25 分)
將一系列給定數字插入乙個初始為空的小頂堆h
。隨後對任意給定的下標i
,列印從h[i]
到根結點的路徑。
每組測試第1行包含2個正整數n和m(≤1000),分別是插入元素的個數、以及需要列印的路徑條數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。最後一行給出m個下標。
對輸入中給出的每個下標i
,在一行中輸出從h[i]
到根結點的路徑上的資料。數字間以1個空格分隔,行末不得有多餘空格。
5 3
46 23 26 24 10
5 4 3
24 23 10
46 23 10
26 10
#include#include#includeusing namespace std;
#define maxn 100005
int a[maxn];
void insert(int i)
}int main()
while(m--)
else
printf(" %d",a[i]);
} printf("\n");
}}
資料結構中的堆
堆在邏輯上是一顆完全二叉樹,一般採用順序表儲存的方式。當然這裡的堆和記憶體中的堆毫無關係,只不過是名字恰好相同。其有大堆和小堆之分 一 大堆 任一結點資訊均大於等於它左右孩子的資訊,位於堆頂結點的資訊最大,從根節點到每個結點路徑 上陣列元素組成的序列都是遞增的。二 小堆 任一結點資訊均小於等於它左右...
資料結構中的堆
堆排序 heapsort 是指利用堆積樹 堆 這種資料結構所設計的一種排序演算法,它是選擇排序的一種。可以利用陣列的特點快速定位指定索引的元素。堆分為大根堆和小根堆,是完全二叉樹。大根堆的要求是每個節點的值都不大於其父節點的值,即a parent i a i 在陣列的非降序排序中,需要使用的就是大根...
PTA 資料結構與演算法 7 5 堆中的路徑
如有不對 不吝賜教 將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h i 到根結點的路徑。輸入格式 每組測試第1行包含2個正整數n和m 1000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的小頂堆的整...