创建huffman树

 

建立HuffMan树,利用的数组指针

 

 

#include "stdafx.h"
#include "stdio.h"

#define  MAX 4  //叶节点的数目


struct node
{
	int value;
	node* left;
	node *right;

	node()
	{
	  left=right=NULL;
	}

};


int main(int argc, char* argv[])
{
	node * shuzu[MAX];

	for(int i=0;i<MAX;i++)
		shuzu[i]=new node;

	shuzu[0]->value=3;  // 叶节点赋值
	shuzu[1]->value=4;
	shuzu[2]->value=3;
	shuzu[3]->value=2;

	int remainnum=4;

	while(remainnum>1)
	{
		for(int i=0;i<remainnum;i++)  //排序 
		{
			for(int j=i+1;j<remainnum;j++)
			{
				if(shuzu[i]->value<shuzu[j]->value)
				{
					node *temp;
					temp=shuzu[i];
					shuzu[i]=shuzu[j];
					shuzu[j]=temp;
				
				
				}

			
			
			}
		}

		node * point=new node;   //最小两个节点 合并 

		point->value=shuzu[remainnum-1]->value+shuzu[remainnum-2]->value;
		point->left=shuzu[remainnum-1];
		point->right=shuzu[remainnum-2];

		shuzu[remainnum-2]= point;

		remainnum--;

	
	
	}


	node *tree=shuzu[0]; //剩下最后一个就是根节点



	return 0;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值