C语言横向输出哈夫曼树
时间: 2023-12-01 21:53:26 浏览: 82
以下是C语言实现的哈夫曼树横向输出的代码,其中huffman_tree为哈夫曼树的指针:
```c
#include <stdio.h>
void print_tree(int depth, int is_left, char* prefix, huffman_node* huffman_tree) {
if (huffman_tree == NULL) {
return;
}
char* new_prefix = (char*) malloc(sizeof(char) * (depth+1));
sprintf(new_prefix, "%s%s", prefix, is_left ? "│ " : " ");
print_tree(depth+1, 1, new_prefix, huffman_tree->right);
printf("%s%s─%d\n", prefix, is_left ? "└── " : "┌── ", huffman_tree->weight);
print_tree(depth+1, 0, new_prefix, huffman_tree->left);
}
void print_huffman_tree(huffman_node* huffman_tree) {
print_tree(0, 0, "", huffman_tree);
}
```
在代码中,我们使用了递归的方式依次输出哈夫曼树的节点,并在输出节点时判断是左子节点还是右子节点,以确定输出的前缀。在每次递归过程中,我们在前缀的基础上添加“│ ”或“ ”,并将前缀和当前节点传递给下一层递归函数。最终,我们输出当前节点的信息,包括节点对应的权值和前缀,然后递归输出节点的左右子树。
阅读全文