I'm trying to implement Huffman's Coding algorithm in python but when I try to add node data in the tree I'm not getting the correct output values?
Here is the code that I have so far for adding the nodes:
n = 6
charArray = ['a','b','c','d','e','f']
charFreq = [45,13,12,16,9,5]
Heap = []
for i in range(0, n):
lol = HuffmanNode()
lol.setDataC(charFreq[i], charArray[i])
lol.left = None
lol.right = None
heapq.heappush(Heap, lol)
root = HuffmanNode()
root = None
while (len(Heap) > 1):
x = HuffmanNode()
x = heappeak(Heap)
heapq.heappop(Heap)
print("X data")
print(x.data)
y = HuffmanNode()
y = heappeak(Heap)
heapq.heappop(Heap)
print("Y data")
print(y.data)
f = HuffmanNode()
f.data = x.data + y.data
print("f data")
print(f.data)
f.c = '-'
f.left = x
f.right = y
root = f
heapq.heappush(Heap, f)
And I get the output:
X data
5
Y data
9
f data
14
X data
14
Y data
16
f data
30
X data
30
Y data
12
f data
42
X data
42
Y data
13
f data
55
X data
55
Y data
45
f data
100
f:00000
e:00001
d:0001
c:001
b:01
a:1
When it should be:
X data
5
Y data
9
f data
14
X data
12
Y data
13
f data
25
X data
14
Y data
16
f data
30
X data
25
Y data
30
f data
55
X data
45
Y data
55
f data
100
a:0
c:100
b:101
f:1100
e:1101
d:111
For some reason it's reading 14 again in the heap and no idea why? Any help would be great