05-树7 堆中的路径
2015-11-05 15:36
253 查看
05-树7 堆中的路径 (25分)
将一系列给定数字插入一个初始为空的小顶堆
10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。
思路:
1,基础题,考二叉堆的建立和插入,其实删除比插入复杂一点,但这里不需要。
#include <iostream>
using namespace std;
typedef struct Heap* MinHeap;
struct Heap
{
int size;
int capacity;
int *element;
};
MinHeap Initialize(int maxElement)
{
MinHeap h = new Heap;
h->size = 0;
h->capacity = maxElement;
h->element = new int[maxElement+1];
h->element[0] = -10001;
return h;
}
void Insert(MinHeap h, int x)
{
int i;
for(i=++h->size; h->element[i/2]>x; i/=2)
h->element[i] = h->element[i/2];
h->element[i] = x;
}
int main()
{
int n,m,x,q;
cin>>n>>m;
MinHeap h = Initialize(n);
for(int i=0;i<n;i++)
{
cin>>x;
Insert(h,x);
}
for(int i=0;i<m;i++)
{
cin>>q;
for(int j=q;j>1;j/=2)
cout<<h->element[j]<<' ';
cout<<h->element[1]<<endl;
}
return 0;
}
将一系列给定数字插入一个初始为空的小顶堆
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
思路:
1,基础题,考二叉堆的建立和插入,其实删除比插入复杂一点,但这里不需要。
#include <iostream>
using namespace std;
typedef struct Heap* MinHeap;
struct Heap
{
int size;
int capacity;
int *element;
};
MinHeap Initialize(int maxElement)
{
MinHeap h = new Heap;
h->size = 0;
h->capacity = maxElement;
h->element = new int[maxElement+1];
h->element[0] = -10001;
return h;
}
void Insert(MinHeap h, int x)
{
int i;
for(i=++h->size; h->element[i/2]>x; i/=2)
h->element[i] = h->element[i/2];
h->element[i] = x;
}
int main()
{
int n,m,x,q;
cin>>n>>m;
MinHeap h = Initialize(n);
for(int i=0;i<n;i++)
{
cin>>x;
Insert(h,x);
}
for(int i=0;i<m;i++)
{
cin>>q;
for(int j=q;j>1;j/=2)
cout<<h->element[j]<<' ';
cout<<h->element[1]<<endl;
}
return 0;
}
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法