哈夫曼编码后的(哈夫曼)树是否可以实现满二叉树

来源:百度知道 编辑:UC知道 时间:2024/05/28 23:53:35
通过哈夫曼编码的哈夫曼树
是否可以实现成为满二叉树
是否有实现的方法或者代码?

楼下的实现的代码输出的最终是不是满二叉树啊?是不是还需要什么条件?

keyi

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAX 100 /*定义一个最大值*/
typedef struct
{
int weight;
int parent,lchild,rchild;
char code;
}hufftree; /*定义哈夫曼树的类型*/
typedef char * huffcode;

void select(hufftree *p,int j,int *s)/*查找j以前的两个权值最小的元素*/
{
int i,m,n,mid,t; /*将其位序号存放到s中*/
hufftree *q;
m=n=MAX;/*m中存放最小,n的中存放次小的*/
for(i=0,q=p;i<j;i++,q++)
if(q->parent==0)
{ if(q->weight<m)
{ mid=m; m=q->weight; n=mid;
t=*s; *s=i; *(s+1)=t;
} /*若找到最小的则交换*/
else if(q->weight<n)
{ n=q->weight; *(s+1)=i;}
}
}
void output(hufftree *ht,int n)/*输出建好的哈夫曼树函数*/
{
int m,i;
hufftree *p;
m=2*n-1;
printf("建好的哈夫曼