目錄html
更新、更全的《數據結構與算法》的更新網站,更有python、go、人工智能教學等着你:http://www.javashuo.com/article/p-zfinzipt-hh.htmlpython
將一系列給定數字插入一個初始爲空的小頂堆H[]。隨後對任意給定的下標i,打印從H[i]到根結點的路徑。算法
輸入樣例:數據結構
5(結點樹) 3(i的個數)網站
46 23 26 24 10 -》結點數據人工智能
5 4 3 -》i值spa
經過上述樣例,咱們能夠獲得下圖所示的樹結構:code
經過觀察該樹,咱們能夠看到輸出樣例:htm
24 23 10blog
46 23 10
26 10
/* c語言實現 */ #define MAXN 1001 #define MINH -10001 int H[MAXN], size; void Create() { size = 0; H[0] = MINH; // 設置崗哨 } void Insert(int X) { // 將X插入H。這裏省略檢查堆是否已滿的代碼 int i; for (i = ++size; H[i/2] > X; i /= 2) H[i] = H[i/2]; H[i] = X; }
/* c語言實現 */ int main() { 讀入n和m; 根據輸入序列建堆; 對m個要求:打印到根的路勁; return 0; } int main() { int n, m, x, i, j; scanf("%d %d", &n, &m); Create(); // 堆初始化 for (i = 0; i < n; i++){ // 以逐個插入方式建堆 scanf("%d", &x); Insert(x); } for (i = 0; i < m; i++){ scanf("%d", &j); printf("%d", H[j]); while (j > 1) { // 沿根方向輸出各結點 j /= 2; printf("%d", H[j]); } printf("\n"); } return 0; }