pointers - 用 C 构建一棵 Huffman 树。结果总是只有一棵树,有根和它的两个儿子
问题描述
我一直在尝试用这个算法在 C 中构建一个霍夫曼树。
struct node *temp1, *temp2, *new_node;
while (size != 1) {
temp1 = extractmin(minheap, size);
size--;
temp2 = extractmin(minheap, size);
size--;
new_node = newnode((temp1->frequency) + (temp2->frequency), '$');
new_node->lson = temp1;
new_node->rson = temp2;
insert(minheap, new_node, size);
size++;
}
struct node * extractmin(struct node * heap[], int N) {
struct node *min = heap[1];
struct node *temp = newnode((heap[N])->frequency, (heap[N])->c);
heap[1] = temp;
N = N - 1;
min_heapify(heap, 1, N);
return min;
}
void insert(struct node * heap[], struct node * new_node, int N) {
int i, j;
N = N + 1;
i = N;
j = (i / 2);
while ((i > 1) && ((heap[j])->frequency > (new_node)->frequency)) {
heap[i] = heap[j];
i = j;
j = i / 2;
}
heap[i] = new_node;
}
结果似乎总是一棵只有根和两个儿子的树。尝试访问其任何儿子的儿子总是返回 NULL 并导致分段错误。我在做什么结果呢?
解决方案
推荐阅读
- javascript - 你如何让 Material-UI 选项卡与 react-router 一起工作?
- python - 烧瓶棉花糖 base_fields.Function in base_fields.Nested
- java - Spring @ConditionalOnProperty havingValue = "value1" 或 "value2"
- android - 我想读取服务器发送的数据(我的服务器是 esp8266)
- wpf - WPF:如何使用透明级别设置我的表单样式
- javascript - 我的 CodePlayer 无法处理我的 Blogger 帖子
- c# - C# 4 个字节 [] 数组到 int[] 的索引
- python-3.x - PIP 安装 pywin32 服务失败:功能不正确
- java - 通过选择中间元素创建序列
- angular - 角度伊斯坦布尔代码覆盖率报告中的导入中未采用 if-else 路径