my Code
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>
9using namespace std;
10
11class huffNode
12{
13public:
14 int number;
15 huffNode *Left;
16 huffNode *Right;
17 bool flag; //true, means original number; false, for new ones
18 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};
24bool hCompare(const huffNode & m1, const huffNode & m2) {
25 return m1.number<m2.number;}
26
27//int uu;
34
35int _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 else
106 {
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
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>
9using namespace std;
10
11class huffNode
12{
13public:
14 int number;
15 huffNode *Left;
16 huffNode *Right;
17 bool flag; //true, means original number; false, for new ones
18 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};
24bool hCompare(const huffNode & m1, const huffNode & m2) {
25 return m1.number<m2.number;}
26
27//int uu;
34
35int _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 else
106 {
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