1
// huffmanTree.cpp : Defines the entry point for the console application.2
//3

4
#include "stdafx.h"5
#include <algorithm>6
#include <iostream>7
#include <vector>8
#include <string>9
using namespace std;10

11
class huffNode 12


{13
public: 14
int number;15
huffNode *Left;16
huffNode *Right;17
bool flag; //true, means original number; false, for new ones18

huffNode( int n, bool bFlag=true ) : number(n), flag(bFlag)
{Left=NULL; Right=NULL; used=false;strU="";}19

huffNode()
{huffNode(0);}20
string strU;21
bool used;22

23
};24

bool hCompare(const huffNode & m1, const huffNode & m2)
{25
return m1.number<m2.number;}26

27
//int uu;34

35
int _tmain(int argc, _TCHAR* argv[])36


{37

38
int n=10;39
vector < huffNode > vect;40
for ( int i=0; i<n; i++)41

{42
vect.push_back( huffNode( i) );43
}44

45
huffNode * f1; //= &vect[0];46
huffNode * f2; //= &vect[1];47
huffNode * f0;48
huffNode * tempF;49
int temp=0;50

51
52
for ( int i=0; i < n-1; i++)53

{54
//sort( vect.begin(), vect.end(), hCompare );55
//f1 = & vect[0];56
int temp=0;57
for ( int t=0; t<n+i; t++) 58

{ 59
tempF = &vect[t];60
61
if (tempF->used != true)62

{63
if (temp==0)64

{65
f1 = & vect[t];66
f1->used = true;67
temp++;68
}69
else if (tempF->number<=f1->number)70

{71
f1->used = false;72
f1 = & vect[t];73
f1->used = true;74
}75
}76
}77
temp=0;78
for ( int t=0; t<n+i; t++) 79

{ 80
tempF = &vect[t];81
if (tempF->used != true)82

{83
if (temp==0)84

{85
f2 = & vect[t];86
f2->used = true;87
temp++;88
}89
else if (tempF->number<=f2->number)90

{91
f2->used = false;92
f2 = & vect[t];93
f2->used = true;94
}95
}96
}97

98
99
f0 = &huffNode( f1->number + f2->number, false);100
if ( f1->flag != false)101

{102
f0->Left = f2;103
f0->Right = f1;104
}105
else106

{107
f0->Left = f1;108
f0->Right = f2;109
}110
cout <<" f1: " << f1->number;111
if (f1->Left==NULL)112

{113
cout<<"*";114
}115
cout<< " f2: "<< f2->number;116
if (f2->Left==NULL)117

{118
cout<<"*";119
}120
cout<< endl; 121
vect.push_back( *f0 );122

123

124
}125

126

127

128
return 0;129
}130

131
