2841 - 构造哈夫曼树

给定n个叶子结点的权值,构造一棵哈夫曼树,用顺序结构存储并输出。
每个结点要求包含序号、值、父结点(其序号值)、左孩子结点(其序号值)和右孩子结点(其序号值)。同一结点的左右孩子结点,左孩子结点的权值较小,右孩子结点的权值较大,如果左右孩子结点的权值相同,则左孩子结点的序号较小,右孩子结点的序号较大。

输入

第一行一个整数n(1<= n <= 100),表示有n个叶子结点;
第二行为n个整数,其最大值不超过100,分别为n个叶子结点的权值。

输出

多行,每行为一个哈夫曼树结点的信息,按序号由小到大输出。
每个结点的信息包括:序号、值、父结点、左孩子、右孩子,同一行各数据间用一个空格分隔。

样例

输入

5
5 4 3 2 1

输出

1 5 8 0 0
2 4 8 0 0
3 3 7 0 0
4 2 6 0 0
5 1 6 0 0
6 3 7 5 4
7 6 9 3 6
8 9 9 2 1
9 15 0 7 8

来源

奇遇编程

题目参数

时间限制 1 秒
内存限制 32 MB
提交次数 0
通过人数 0
统计

上一题 下一题