Реферат: Сжатие данных
findletter - от корня к листу.
СД для представления дерева накапливаемых частот по существу такие же, как
и рассмотренные ранее для представления дерева кодов префиксов, с добавлением
массива, хранящего частоты каждого узла.
const
maxchar = ... { maximum source character code };
succmax = maxchar + 1;
twicemax = 2 * maxchar + 1;
root = 1;
type
codetype = 0..maxchar { source character code range };
bit = 0..1;
upindex = 1..maxchar;
downindex = 1..twicemax;
var
up: array[downindex] of upindex;
freq: array[downindex] of integer;
left,right: array[upindex] of downindex;
Инициализация этой структуры включает в себя не только построение древовидной
СД, но и инициализацию частот каждого листа и узла следующим образом:
procedure initialize;
var
u: upindex;
d: downindex;
begin
for d := succmax to twicemax do freq[d] := 1;
for u := maxchar downto 1 do begin
left[u] := 2 * u;
right[u] := ( 2 * u ) + 1;