Начал решать задачу по написанию алгоритма Хаффмена, и вроде все понятно, но столкнулся с трудностью, которую не могу преодолеть.
На входе есть 2 массива, один с весом, другой со знакоами, порядковые номера весов и знаков совпадают. Дальше создаю массив, который отражает структуру бинарного дерева. Вот пример :
a=[1,2,3,4,5,6,7,8,9] b=['a','b','c','d','e','f','g','h','x'] while len(a)!=1: zna= [b[0],b[1]] z=a[0]+a[1] a.append(z) a.sort() b.insert(a.index(z),zna) del a[1] del a[0] del b[1] del b[0] print(b) [[[['d', 'e'], 'x'], [[[['a', 'b'], 'c'], 'f'], ['g', 'h']]]]
Собственно, вроде как замечательно, но дальше надо присвоить всем элементам значения, то есть на данном примере первым идет символ “х”, ему надо присвоить значение 00, элементам d и e присваиваются значения 011 и 010.
С этой задачей(в общем виде) я вообще ну ниак не могу справиться. Понимаю, что наверняка отнють не самое изящное решение данной задачи хочу сотворить, но может есть какой способ довести это до ума. Искренне ваш!