前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >05-树7 堆中的路径

05-树7 堆中的路径

作者头像
废江_小江
发布2022-09-05 11:39:37
1780
发布2022-09-05 11:39:37
举报
文章被收录于专栏:总栏目

将一系列给定数字插入一个初始为空的小顶堆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

这是补的之前的一个题,后面发现漏写这一道了,可能因为太简单了把。

代码语言:javascript
复制
#include<iostream>
#include<malloc.h>
typedef struct HNode* Heap; /* 堆的类型定义 */
typedef int ElementType;
using namespace std;
struct HNode {
	ElementType* Data; /* 存储元素的数组 */
	int Size;          /* 堆中当前元素个数 */
	int Capacity;      /* 堆的最大容量 */
};
typedef Heap MaxHeap; /* 最大堆 */
typedef Heap MinHeap; /* 最小堆 */
 
#define MINDATA -10001  /* 该值应根据具体情况定义为大于堆中所有可能元素的值 */
 
MaxHeap CreateHeap(int MaxSize)
{ /* 创建容量为MaxSize的空的最大堆 */
 
	MaxHeap H = (MaxHeap)malloc(sizeof(struct HNode));
	H->Data = (ElementType*)malloc((MaxSize + 1) * sizeof(ElementType));
	H->Size = 0;
	H->Capacity = MaxSize;
	H->Data[0] = MINDATA; /* 定义"哨兵"为大于堆中所有可能元素的值*/
 
	return H;
}
bool IsFull(MaxHeap H)
{
	return (H->Size == H->Capacity);
}
 
bool Insert(MaxHeap H, ElementType X)
{ /* 将元素X插入最大堆H,其中H->Data[0]已经定义为哨兵 */
	int i;
 
	if (IsFull(H)) {
		/*printf("最大堆已满");*/
		return false;
	}
	i = ++H->Size; /* i指向插入后堆中的最后一个元素的位置 */
	for (; H->Data[i / 2] > X; i /= 2)
		H->Data[i] = H->Data[i / 2]; /* 上滤X */
	H->Data[i] = X; /* 将X插入 */
	return true;
}
 
int main() {
	int n, m, tmp;
	cin >> n >> m;
	MinHeap h;
	h = CreateHeap(10001);
	for (int i = 1; i <=n; i++) {
		cin >> tmp;
		Insert(h, tmp);
	}
	while (m--) {
		cin >> tmp;
		bool flag = true;
		while (tmp) {
			if (!flag)
				cout << " ";
			cout << h->Data[tmp];
			flag = false;
			tmp /= 2;
		}
		cout << endl;
	}
}

废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:05-树7 堆中的路径

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-27),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档